标签:这一 方法 col 调用 输入 print 登录 小草 init
属性:将一个方法伪装成一个属性,在代码的级别上没有本质的提升,但是让其看起来更合理
class Person: def __init__(self,name,age): self.name=name if type(age) is int: self.__age=age else: print(‘输入类型有误‘) @property #把方法伪装成属性 def age(self): return self.__age @age.setter def age(self,a1): if type(a1) is int: self.__age=a1 #改变值是在这一步发生的 else: print(‘输入类型有误‘) p1=Person(‘张三‘,18) print(p1.age) #伪装成了属性,所以执行不用加括号 p1.age=37 #伪装之后在这传入要改变年龄的值,传给@age.setter下面函数里的a1 print(p1.age) #此时的age已经被修改了,再执行 @property下面的函数,打印age
# 类方法
# 类方法:通过类名调用的方法,类方法中第一个参数约定俗成是 cls , Python自动将类名空间传给cls
class A: name=‘小草‘ @classmethod def fu(cls): return (‘%s在吃草‘ % cls.name) print(A.fu())
类中有些方法不需要对象参与
class A: name=‘小花‘ age=18 @classmethod def fu(cls): #此时方法无需对象参与,也可以用对象执行方法,但是在类方法中不要这样用 return cls.age+1 print(A.fu())
静态方法
1,对类中的静态变量进行改变,要用类方法
2,继承中,父类得到子类的类空间
不通过类方法,让我的父类的某个方法得到子类的类空间里面的任意值
class A: age=12 def func(self): #父类里面有func这个方法,执行这个函数方法,此时a1传给self print(self.age) #此时就相当于a1.age,这个age是B类里的age,因为实例化的是B类 class B(A): age=22 a1=B() #B类实例化一个对象 a1.func() a1就是对象,此时要执行func这个函数方法,先从对象空间里面去找,对象空间里没有func这个方法,然后再去父类里面找
class A: @staticmethod def login(username,password): if username == ‘fu‘ and password == 123: print(‘登录成功‘) else: print(‘登录失败‘) A.login(‘fu‘,123) # # 静态方法 # # 1,代码块.清晰. # # 2,复用性.
标签:这一 方法 col 调用 输入 print 登录 小草 init
原文地址:https://www.cnblogs.com/hdy19951010/p/9379301.html