版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38689232/article/details/84891868
文章目录
# 1、类名:
命名规则:大驼峰
两种类:
经典类
class 类名:
方法列表
** 新式类:**
class 类名(object):
方法列表
#2、属性:
对象直接添加属性:
# 定义类
class Cat(object):
def soud(self):
print ("喵~~~~")
# 创建一个对象,并用变量cat1来保存它的引用
cat1 = Cat()
# 给这个对象添加属性
cat1.color = '白色'
cat1.foot_num = 4
# 猫的行为
cat1.soud() #喵~~~~
print cat1.color #白色
__init__设置属性: 创建对象后,python解释器默认调用__init__()方法;
class 类名(object):
def __init__(self):
# 各个属性
self.属性名 = 属性值
- init(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么除了self作为第一个形参外还需要2个形参
- init(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去
- 理解self:就是du对象本身。----某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可
python的魔法方法:方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法;
当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
保护对象的属性-----避免非法设置属性值
如果有一个对象,当需要对其进行修改属性时,有2种方法
- 对象名.属性名 = 数据 ---->直接修改
- 对象名.方法名() ---->间接修改
class Cat:
def __init__(self,name):
self.name = name
self.age = 1
cat2 = Cat('小阿布')
# 修改属性
cat2.age = -2 # 这明显是不符合规则的
为了更好的保存属性安全,即不能随意修改,一般的处理方式为
- 将属性定义为私有属性self.__name = name
- 添加一个可以调用的方法,供调用
class Cat:
def __init__(self,name):
self.name = name
def set_age(self, new_age):
if age > 0 and age < 50:
self.age = new_age
else:
self.age = 0
def get_age(self):
return self.age
# 创建对象
cat2 = Cat('小怂')
cat2.set_age(-10)
print cat2.get_age() # 0
cat2.set_age(5)
print cat2.get_age() # 5
** 如果在属性名前面加了2个下划线’__’,则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。**
#3、方法:def 方法名(self,args,…):
私有化方法__方法名(self,args,kwrg): 不能直接被调用,可用:对象._类名__方法名(参数) 进行调用