成员 类中写的内容就是成员
变量
1. 实例变量(成员变量, 字段). 对象.xxx = xxx 实例变量 -> 字段 -> 属性. 给对象用的
2. 类变量. 直接写在类中的变量就是类变量. 类变量一般用类名来访问. 对象中共性的属性提取出来.即所有该类的对象共享的的变量
class Person: country = "中国" # 类变量 def __init__(self,name, age): self.name = name self.age = age # Person.country = "大清" # print(Person.country) # 直接使用类名进行访问 p1 = Person("alex", 185) p1.country = "大清" # 添加了一个实例变量 print(p1.name) print(p1.country) p2 = Person("wusir", 145) print(p2.name) print(p2.country) # 类变量的修改只能通过类名来完成
方法
1. 实例方法(成员方法). 对象直接访问的方法 对象.方法()
class Computer: # 实例⽅法(成员⽅法) def play(self): print("我的电脑可以玩⼉") c = Computer() c.play() # 对象直接去调⽤实例⽅法
2. 类方法. 需要在参数列表的第一位置预留位置, 参数起名cls,被调用时也不需要传递实例对象 添加@classmethod 类名.方法()
class Computer: def play(self): print("我的电脑可以玩⼉") @staticmethod def fare(): print("我的电脑⾮常⽜B, 可以煎鸡蛋") @classmethod def cal(cls, a, b): print(cls) return a+b print(Computer.cal(1, 2)) # 此时会⾃动的把类名传递给类⽅法的第⼀个参数
3. 静态方法. 不需要给方法传递self, 即出现一个方法不需要是使用成员变量的时候,选择静态方法 添加@staticmethod 类名.方法()
@staticmethod def fare(): print("我的电脑⾮常⽜B, 可以煎鸡蛋") Computer.fare() # 类名可以直接访问的 c.fare() # 对象也可以访问. 但最好不要这么⼲. 以便于区分静态⽅法和实例⽅法
属性 @property
把方法转化成属性.
对象.属性
注意事项: 1.方法参数只能有一个self
2.调用时不需要括号, 当属性变量使用
3. 需要有返回值
4. 不能赋值
class User: def __init__(self, name, birthday, qq, email): self.name = name self.birthday = birthday self.qq = qq self.email = email # 方法 @property # 可以把一个方法变成一个属性 def age(self): return 2018 - self.birthday ''' @property 1. 函数只能有一个self参数. 2. 需要有返回值 3. 不能赋值 4. 调⽤的时候, 我们不需要写括号. 直接当成属性变量来⽤就可以了 ''' u = User("王明", 1994, 1024663304, "wangming@126.com") print(u.age) u.qq = 10010 u.age = 18
私有 (在python中,一般不提倡设置和使用私有信息)
__作为前缀
在自己类中可以随意访问. 但是出了类任何人都不可以访问这个私有内容
但是通过公共方法可以访问
访问私有变量
访问私有方法
访问私有方法 class Person: def __init__(self): pass def __yue(self): print("我要约会") def job(self): print("我要⼯作") self.__yue() # 在⾃⼰类中访问⾃⼰的其他⽅法. 哪怕是私有的. 也是⾃⼰在⽤ p = Person() p.job()