【1.95】面向对象-实例化--6
1
#属性 数据属性 函数属性(方法) class Chinese: "这是一个中国人的类" def __init__(self,name,age,gender): print("start") self.mingzi=name self.nianlin=age self.xinbie=gender print("end") # return dic 这里也不用return dang = "gcd" def sui_di_tu_tan(): print("正在吐痰") def cha_dui(self): print("%s 正在插队"%self.mingzi) #print("%s 正在插队"%self["mingzi"]) 这个是函数中的写法,但是class 使用self 后 实例化p1 就直接可以访问字典的键 #print (p1.mingzi) #yaoming # return __init__(self,name,age,gender) 因为是类 class 就不用return class 已经帮我们return了 #实例化 就只有数据属性 没有函数属性 p1 = Chinese("yaoming",18,"male") print(p1) # <__main__.Chinese object at 0x018CA950> 就是一个字典对象 print(p1.__dict__) #{'mingzi': 'yaoming', 'nianlin': 18, 'xinbie': 'male'} # 实例化后就是一个字典 print(p1.dang) # gcd 作用域 就是在自己的属性字典里面找 然后又去class中找,找不到就报错 print (p1.__dict__["mingzi"]) #yaoming print (p1.mingzi) #yaoming p1.cha_dui() #yaoming 正在插队
只要是class 直接就加载 代码 然后自己去找 init 函数 然后运行 实例化
实例化的对象 只有数据属性 没有函数属性
然后实例化后就是一个字典对象 然后可以通过对象加 dian . JIAN p1.mingzi 就可以访问你传入的name 了
对于函数的访问也就是这样 用
作用域在类内 找不到就报错
我们这里就访问 dang 访问p1 自己的 键 访问class 中的函数
但是这里
#p1.sui_di_tu_tan() #TypeError: sui_di_tu_tan() takes 0 positional arguments but 1 was given
说明 就是 class 实例化后 就会在访问函数 后 自己给函数传递一个参数 self 就是 p1 给了 sui_ditu_tan(p1)
我们看看 self 就是实例化后的 p1
面向对象编程 就是节约了大量的函数属性 数据属性也是建立后才有的 节约内存 节约空间
实例化的 也只有数据属性
浙公网安备 33010602011771号