今日主要学习了:
1 .成员
2. 变量
3. 方法
4.属性
5.私有
1. 成员 在类中你能写的所有内容都是成员
2 .变量
1) 实例变量: 昨天写的就是实例变量 ,由对象去访问的变量 .
class Person: #创建一个人的类 def __init__(self,name,id,gender,birth): # 创建初始化方法,创建方法 self.name=name #定义属性 self.id=id self.gender=gender self.birth=birth p=Person('alex','110','男','1989-12-12') #创建了一个人 p.birth='1999-1-1' #修改alex的出生年月 print('p.birth')
2) 类变量 , 此时这个变量属于类, 但是对象也可以访问
class Person: def __init__(self,name,gender): self.name=name self.gender=gender p=Person('alex','男') p2=Person('wusir','女) p.country='中国' # 这里是在p这个人内部创建了一个country,并不是在外面 print('p.country')#打印结果为中国 Person.country='大清' # 这里是在Person中创建的国家,所以你每创建一个新的对象,他默认的country都是大清 print(p2.country) #这里的打印结果是大清 类变量可以给对象使用
3 .方法
1) 类方法 (默认在形参位置的参数是cls,并且加一个@classmethod)
类方法一般用类名去访问 Person.he() #类方法
def chi(self): print('人会吃') @classmethod#装饰器 ,此时这个方法是一个类方法 def he(cls): #此时接收到的cls是类名 print('人会喝')
2) 实例方法 : 昨天学的就是实例方法
3)静态方法 (@staticmethod)
@staticmethod #静态方法 def yue(): print('今天约吗,小姐姐')
静态方法可以使用对象访问.也可以使用类名访问.
但是一般推荐使用类名访问
P=person()
P.yue()
4. 属性
#假设我们要或取每一个人的实际年龄 class Person: def __init__(self,name ,birth): self.name=name self.birth=birth # 年龄应该是算出来的,而不是直接储存 ,如果有14亿人,每年都要更新一次,耗时耗力很大 @property #将一个方法变更成一个属性,每次哪的属性的时候就会自动的去执行这个方法 ,#方法的返回值就是属性值 def age(self): return 2018-self.birth
p1 = Person("武sir", "未知", 2000) print(p1.age) # 看着像一个变量一样使用, 实际上这里是调用的一个方法 print(p1.age) # p1.age = 26 # 不可以的, 因为age是一个方法. 不是一个变量
5 .私有(__XX就是私有)
class Person: __qie='金莲' def __init__(self,name,mimi): self.name=name self.mimi=mimi def gaosu(self): print(f"把秘密告诉了太白, 第二天所有人都知道了{self.__mimi}")
私有一般是在前面加'__'就表示是私有的,用途一般是保护你不想让别人看到的东西,(例如:登录的用户名和密码,你怕忘记,可以写成是私有的)