小学生绞尽脑汁也学不会的python(面对对象-----成员)
成员
class Person:
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)
成员: 在类中定义的变量和方法都被成为成员
变量
1. 成员变量(实例变量)(字段column) (重点)
2. 类变量(静态变量) 直接写在类中的. 共享出去的.
方法
1. 成员(实例)方法 加了self的.调用的时候。必须用对象去访问. (重点)
2. 类方法, 当方法需要传递类名的时候. 需要类方法. 规范规则: 在上方加@classmethod
3. 静态方法, 当你的方法不需要传递当前类的对象的时候。 语法规则:在方法上面加@staticmethod
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. @propery 改变一个方法成为属性
2. 这个方法只能有一个参数, self
3. 必须有返回值.
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() # 类方法默认第一个参数接收的是类名
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)