### 成员 ###
一、变量:
1.实例变量 :
2.类变量 :
直接写在类下面的叫类变量;
直接使用类名进行访问;
把对象中的共性的属性提取出来
类变量的修改只能类名来完成;
练习
class Person():
country = '中国' # 直接写在类下面的叫类变量;
def __init__(self, name, age):
self.name = name
self. age = age
print(Person.country) # 直接使用类名进行访问;
Person.country = '中华人民共和国' # 类变量的修改只能类名来完成;
print(Person.country)
p1 = Person('Euan', 22)
p1.country = '中华' # 添加一个实例变量,无法修改类变量
print(p1.name)
print(p1.country)
二、方法
1.实例方法:
调用实例方法:
例:
class Lol():
def hero(self):
print('阿卡丽')
h = Lol()
h.hero() # 调用实例方法
2.类方法:
类方法的调用:类名.方法
在实例方法上面写 :@classmethod 就是类方法
不管用对象还是类去访问类方法,默认传递进去的是类
练习
class Person():
# 实例方法
def chi(self):
print('吃')
# 类方法
@classmethod # 类方法
def he(cls): # cls 类
print('喝')
# 用类去访问
Person.he()
# 用对象去访问
p = Person()
p.he() # 不管用对象还是类去访问类方法,默认传递进去的是类
3.静态方法:
类方法的调用:类名.方法
在实例方法上面写 :@staticmethod 就是静态方法
实际上就是在类中定义一个普通函数
三、属性
在实例方法上面写 :@property 就是属性
函数只能有一个self参数
需要有返回值
不能赋值
调用时后面不需要加括号()
练习:
class User():
def __init__(self, name, birthday, phone):
self.name = name
self.birthday = birthday
self.phone = phone
@property # 把一个方法变成属性
def age(self):
return (2018 - self.birthday)
u = User('Euan', 1996, '13168783010')
print(u.age) # 调用时后面不需要加括号()
### 私有 ###
__作为前缀
在自己类中可以随意访问,但跳出类任何人都不可以访问这个私有内容