day17 面向对象-成员
今日主要学习了:
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}")
私有一般是在前面加'__'就表示是私有的,用途一般是保护你不想让别人看到的东西,(例如:登录的用户名和密码,你怕忘记,可以写成是私有的)

浙公网安备 33010602011771号