一.成员
1.实例变量 对象.属性=xxxx
1 class Person:
2 def __init__(self,name,id,gender,birth):
3 self.name = name
4 self.id = id
5 self.gender = gender
6 self.birth = birth
7
8 p = Person('哈哈','10086','不详','1990-12-15')
9 print(p.birth) #p.birth就是实例变量
2.类变量 最好用类.变量 ,对象.变量也能用
1 class Person:
2
3 country = '大清' 类变量
4
5 def __init__(self,name,gender):
6 self.name = name
7 self.gender = gender
8
9 r = Person('张三','男')
10 r1 = Person('李四', '女')
11
12 print(r.name)
13 print(r.gender)
14 print(r.country) 对象.类变量
15 print(Person.country) 类.类变量
3.实例方法
1 class Computer:
2
3 # 实例方法
4 def play(self):
5 print('电脑可以扫雷')
6
7 # 在定义实例方法的时候. 必须给出一个参数self
8 # 形参的第一个参数, 自动的把对象给传递进来
9 def work(self):
10 # print(self)
11 print('电脑用来工作')
12
13 c = Computer()
14 c.work() # 调用的时候不需要手动给出self
4.类方法
1 class Preson:
2
3 # 实例方法
4 def chi(self):
5 print('人会吃')
6 @classmethod # 装饰器. 此时这个方法是一个类方法
7 def he(cls): # 此时接受到的cls是类名
8 print('人会喝')
9
10
11 # 用对象访问
12 p = Preson()
13 p.he() # 在调用类方法的时候. 默认的把类名传递给类方法
14
15 # 类方法一般用类名去访问
16 Preson.he()
5.静态方法
1 class Person:
2
3 @staticmethod
4 def yue():
5 print('看见我就是静态方法')
6
7
8 # 静态方法可以使用对象访问. 也可以使用类名访问. 但是一般推荐使用类名访问
9 p = Person()
10 p.yue()
11
12 # 推荐使用类名访问
13 Person.yue()
6.属性
1 class Preson:
2 def __init__(self,name,gender,birth):
3 self.name = name
4 self.gender = gender
5 self.birth = birth
6
7 # 年龄 -> 应该是算出来的. 而不是直接存储的
8 @property # 把一个方法更改成一个属性, 每次拿属性的时候会自动的去执行这个风法
9 # 方法的返回值就是属性值
10 def age(self):
11 return 2018-self.birth
12
13 p1 = Preson('wusir','未知',2000)
14 print(p1.age) # 看着像一个变量一样使用. 实际上这里是调用的一个方法
15 print(p1.age)
16
17 # p1.age = 26 # 不可以赋值, 因为age是一个方法不是变量 方法不能进行赋值操作
7.私有
1 class Person:
2
3 _qie = '潘潘' # 类变量
4
5 def __init__(self,name,mini):
6 self.name = name
7 self._mini =mini # 私有内容 实例变量
8
9 def gaosu(self):
10 print(f"把秘密告诉了太白, 第二天所有人都知道了{self._mini}")
11 # print(Person.__qie) # 私有的类变量只能在类中调用
12
13 def __yue(self): # 私有的实例方法
14 print('我要和宝宝约')
15
16
17 p = Person('wusir','和嫂子的故事')
18 # print(p.__mimi) # 私有的内容只能在类里面调用
19 p.gaosu()