成员 类中写的内容就是成员
变量
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)
# 类变量的修改只能通过类名来完成
View Code
方法
1. 实例方法(成员方法). 对象直接访问的方法 对象.方法()

class Computer:
# 实例⽅法(成员⽅法)
def play(self):
print("我的电脑可以玩⼉")
c = Computer()
c.play() # 对象直接去调⽤实例⽅法
View Code
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)) # 此时会⾃动的把类名传递给类⽅法的第⼀个参数
View Code
3. 静态方法. 不需要给方法传递self, 即出现一个方法不需要是使用成员变量的时候,选择静态方法 添加@staticmethod 类名.方法()

@staticmethod
def fare():
print("我的电脑⾮常⽜B, 可以煎鸡蛋")
Computer.fare() # 类名可以直接访问的
c.fare() # 对象也可以访问. 但最好不要这么⼲. 以便于区分静态⽅法和实例⽅法
View Code
属性 @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
View Code
私有 (在python中,一般不提倡设置和使用私有信息)
__作为前缀
在自己类中可以随意访问. 但是出了类任何人都不可以访问这个私有内容
但是通过公共方法可以访问
访问私有变量

访问私有方法
访问私有方法
class Person:
def __init__(self):
pass
def __yue(self):
print("我要约会")
def job(self):
print("我要⼯作")
self.__yue() # 在⾃⼰类中访问⾃⼰的其他⽅法. 哪怕是私有的. 也是⾃⼰在⽤
p = Person()
p.job()