成员 class Person: def __init__(self, name, num, gender,birthday): # 成员变量(实例变量) self.name = name self.num = num self.gender = gender self.birthday = birthday # 对象来访问(成员方法) (实例方法) def marry(self, partner): print('人会结婚%s' % partner) 成员: 在类中定义的变量和方法都被称为成员
class Person: country = "中国" # 类变量. 不属于对象, 对象可以访问. def __init__(self, name, num, gender, birthday): # 成员变量(实例变量) self.name = name self.num = num self.gender = gender self.birthday = birthday # 对象来访问(成员方法)(实例方法) def marray(self, duifang): print("人会结婚%s" % duifang) alex = Person("李杰", 10086, "男", "昨天") alex.country = "澳大利亚" # 注意。 这里和类变量没由一毛钱关系, 给alex单独加一个属性叫country = ”澳大利亚“ wusir = Person("吴佩琪", 10010, "女", "今天") print(alex.country) # 澳大利亚 # 拿到的是自己的。成员实例变量 字段 print(wusir.country) # 中国 print(Person.country) # 中国 # 总结:类变量,用类名去操作. 规范.
变量 1. 成员变量(实例变量)(字段column(数据库中的列)) 每个实例都拥有的变量 (重点) 2. 类变量(静态变量) 直接写在类中的,共享出去的. 方法 1. 成员(实例)方法 加了self,调用的时候必须用对象去访问. (重点) 2. 类方法 当方法需要传递类名的时候,需要类方法,规范: 在上方加@classmethod 系统自动把类名传递给类方法的第一个参数 3. 静态方法 当你的方法不需要传递当前类的对象的时候. 语法规则:在方法上面加@staticmethod #静态内容用类名访问 [dict.fromkeys(*args, **kwargs)] 面试题: 说一说,静态方法,类方法和实例方法的区别. 静态方法: 当方法不需要传递当前类的对象的时候,只是在类中定义的一个函数,一个功能,方法上面加@staticmethod 类方法: 当方法需要传递类名的时候使用,方法上加@classmethod 实例方法: 用对象去访问的方法.
class Person: def __init__(self): pass # 实例方法需要传递类的对象 self def think(self): print("人能思考") # 静态方法不需要传递对象或者类 @staticmethod # 静态方法 def jisuan(a, b): print("我来过这里") return a + b # 类方法: 第一个参数传递的是类名 @classmethod def clsMethod(cls): # cls表示的类 p = cls() # 可以动态的创建对象. print("我是一个类方法", p) p = Person() p.think() Person.think(p) # 静态方法的调用: c = Person.jisuan(1, 2) # 类名可以访问 print(c) p = Person() d = p.jisuan(3, 5) # 用对象也可以访问,但是不规范 print(d) # 记住, 静态的内容用类名访问 Person.clsMethod() # 类方法默认第一个参数接收的是类名
属性 用方法来描述属性信息 注意: 1. @property 改变一个方法成为属性 2. 这个方法只能有一个参数, self 3. 必须有返回值
class Person: def __init__(self, name, num, gender, birthday): self.name = name self.num = num self.gender = gender self.birthday = birthday @property # 表示当前方法是一个属性. 方法的返回值就是这个属性的值 def age(self): # 方法只能有一个参数, self return 10 # 必须有返回值 p = Person("alex", "10086", "不详", "1989年12月1日") print(p.age) # 可以直接访问属性, 实际上访问的是age()方法. 返回值就是属性值
私有 只能在自己类中访问. __方法 __变量 __类变量 都是私有, 别人访问不到,子类也不能访问
class Tiger: def __init__(self, name, waibiao, qingzhenglianjiedezuofeng, qingfu, money, fangchan): self.name = name self.waibiao = waibiao self.qingzhenglianjiedezuofeng = qingzhenglianjiedezuofeng self.__qingfu = qingfu self.__money = money self.__fangchan = fangchan def buy(self): print("我有%s" % self.__money) self.__sel() def __sel(self): print("我要卖掉%s" % self.__fangchan) lh = Tiger("alex", "正直", "非常刚正不阿, 666", "小潘潘", 10000000000, 5) print(lh.qingzhenglianjiedezuofeng) print(lh.name) print(lh.waibiao) lh.buy() # lh.__sel() # print(lh.__money)
来源:https://www.cnblogs.com/surasun/p/9707313.html