Day 20
class MyClass:
pass
class MyClass():
pass
class MyClass(object):
pass
class MyCar():
color = "黄色的"
obj = MyCar()
"""
1.成员属性
2.成员方法
"""
class MyCar():
color = "天蓝色的"
def didi():
print("小车会滴滴叫")
"""
class MyCar():
if 5 == 5:
print("打印成功123456")
"""
"""
封装等级:
(1) 私有 : 在类的内部可以访问,在类外不可以
(2) 公有 : 在类的内部可以访问,在类外也可以访问
封装成员:
(1) 成员属性
(2) 成员方法
调用成员:
(1) 对象.成员属性
(2) 对象.成员方法
绑定方法:
(1) 绑定到对象 : 对象调用方法时,系统自己默认传递该对象,作为一个参数传递到当前方法中
(2) 绑定到类 : 对象或者类调用方法时,系统自己默认传递该类,作为一个参数传递到当前方法中
"""
class MyCar():
color = "屎黄色"
logo = "中国吉利汽车"
__price = "2000万"
def run(self):
print("小车会跑,百公里0.01秒,颜色{}".format(self.color))
def __info(self):
print("车主信息是保密的,传说是京城有名的富二代")
obj = MyCar()
print( obj.color )
obj.run()
print(obj.__dict__)
def dahuangfeng():
print("变形! 我是大黄蜂~")
obj.dahuangfeng = dahuangfeng
obj.dahuangfeng()
def qingtianzhu(name):
print("请我叫我一柱擎天,简称{}".format(name))
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu("擎天柱")
def qingtianzhu(obj,name):
print("请我叫我一柱擎天,简称{},颜色是{}".format(name,obj.color))
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu(obj,"擎天柱")
import types
def qingtianzhu(obj,name):
print("请我叫我一柱擎天,简称{},颜色是{}".format(name,obj.color))
obj.qingtianzhu = types.MethodType(qingtianzhu,obj)
obj.qingtianzhu("擎天柱")
obj.weizhentian = lambda : print("我是威震天~ ")
obj.weizhentia
"""
类调用的方式:
类.成员属性
类.成员方法
类中的无参方法只能是类来调用.
"""
class MyCar():
oil = "2.0T"
__price = "5000千万"
def oil_info():
print("百公里油耗是500升",MyCar.color)
def __price_info():
print("我的油耗信息是保密的")
"""
# 对象不能调用类中无参的方法
obj = MyCar()
obj.oil_info()
"""
print(MyCar.oil)
MyCar.color = "屎绿色"
print(MyCar.color)
print(MyCar.__dict__)
"""
{'__module__': '__main__',
'oil': '2.0T',
'_MyCar__price': '5000千万',
'oil_info': <function MyCar.oil_info at 0x7f3f9668b0d0>,
'_MyCar__price_info': <function MyCar.__price_info at 0x7f3f9668b158>,
'__dict__': <attribute '__dict__' of 'MyCar' objects>,
'__weakref__': <attribute '__weakref__' of 'MyCar' objects>,
'__doc__': None,
'color': '屎绿色'
}
"""
def fangxiangpan():
print("改造方向盘的方法")
MyCar.fangxiangpan = fangxiangpan
MyCar.fangxiangpan()
print(MyCar.__dict__)
def fadongji(engin):
print("动力引擎改成{}".format(engin))
MyCar.fadongji = fadongji
MyCar.fadongji("三缸发动机")
MyCar.luntai = lambda name : print("使用{}的轮胎".format(name))
MyCar.luntai("米其林")
print(MyCar.__dict__)
obj = MyCar()
"""
# 类和对象之间的区别
对象可以调用类中的成员属性和方法,返过来,类不能调用对象中的成员.
类中的成员属性和方法归属于类本身,对象可以使用,但是没有修改和删除的权利.
对象在调用相应成员时,先看看自己有没有
如果有,调用自己的
如果没有,调用类中的成员
如果类中成员也没有,直接报错.
"""
MyCar.logo = "别摸我,我是宝马bwm"
obj.logo = "柯尼塞格"
print(obj.__dict__)
print(obj.logo)
class Plane():
captain = "宋云杰"
__sistem = 10
def fly1(self):
print("我的飞机可以倒着飞1")
def fly2():
print("我的飞机可以倒着飞2")
def __fly_info1(self):
print("我的飞机,百公里油耗是5万升1")
def __fly_info2():
print("我的飞机,百公里油耗是5万升2")
def pub_info1(self):
print(self.__sistem)
self.__fly_info1()
def pub_info2():
print(Plane.__sistem)
Plane.__fly_info2()
'''
关于python私有化的实现方法: 改名策略
_类名 + 私有成员 => 改名策略
'''
obj = Plane()
print(obj._Plane__sistem)
obj._Plane__fly_info1()
print(Plane._Plane__sistem)
Plane._Plane__fly_info2()
print(Plane.__dict__)
obj.pub_info1()
Plane.pub_info2()
print(obj.__dict__)
obj.captain = "王浩"
del obj.captain
del Plane.captain
Plane.add_sistem = lambda self: print("因为业务需要,需要增加空姐","<====>")
Plane.add_sistem(1)
obj.add_sistem()
del Plane.add_sistem
obj.paoniu = lambda : print("我的飞机可以用来泡妞")
obj.paoniu()
del obj.paoniu
print(obj.__dict__)
print(Plane.__dict__)