这篇主要是讲解类,Pythong类中私有属性、私有方法、动态添加属性、动态添加方法、多继承、静态方法写个存取款方法。
一、面向对象思想、简单的银行存取方法实现
class Bank:
def __init__(self,name,money):
self.__myMoney = money
self.__name = name
def get_money(self,money):
if self.__myMoney<money:
print('您余额不足 当前余额为:',self.__myMoney)
else:
self.__myMoney -=money
print('取款成功 取款金额:{}元 余额为:{}元'.format(money,self.__myMoney))
def save_money(self,money):
self.__myMoney += money
print('存款成功 存款金额为{} 余额为{}'.format(money,self.__myMoney))
myBank = Bank('张三',12)
myBank.get_money(1)
myBank.save_money(1000000)
二、私有方法
# bank._Bank__getMoney() 私有方法调用
class Bank():
__money = 1000
name = 'father'
def __getMoney(self):
print('money为',self.__money)
def getMoney(self):
self.__getMoney()
bank = Bank()
bank.getMoney()
# print(bank._Bank__getMoney())
三、私有方法继承么?
class Father():
age = 12
__name = '陈旭恒'
def __getName(self):
print('father Name:',self.__name)
def run(self):
# self.__getName()
print('每天跑步上班')
class Son(Father):
def get(self):
f = Father()
print(f.age)
father = Father()
father.run()
print('-----------')
son = Son()
son.get()
四、多继承的小细节
#多继承 一个类继承多个类,继承类中共有方法,依照继承顺序,回执行左边第一个
class Cat():
def __init__(self):
print('I am Cat')
def run(self):
print('飞檐走壁')
class Dog():
def __init__(self):
print("I am Dog")
def run(self):
print('走走蹦蹦')
class Zoo(Cat,Dog):
def run(self):
print('This is Zoo')
zoo = Zoo()
zoo.run()
#结果
#I am Cat
#This is Zoo
五、类中的信息方法
#类的属性
class A:
pass
class Demo(A):
'''
这是Demo类 继承A类
'''
name = '宏星'
def speak(self):
print(self.name,'闪闪')
print(Demo.__doc__) #类的注释说明 只有一个 只识别多行注释
print(Demo.__name__)#类名
print(Demo.__bases__)#类的属性
print(Demo.__dict__)#类的素有信息
六、动态添加属性、方法
#动态添加属性
class Demo():
#限制属性的动态添加 (元组中是范围)
__slots__ = ('name','sex','money')
d = Demo()
print(hasattr(d,'name'))#判断属性是否存在
print(getattr(d,'sex',404))#判断属性是否可以获得到
# print(setattr(d,'name'))
# print(d.name)
d.name = '陈旭'
# d.a = 'a'
#动态添加方法 绑定单个实例的方法
#1、 导入 MethodType
from types import MethodType
#2、 定义空类
class Demo():
pass
#3、 实例化
demo = Demo()
#4、 定义方法
def run(self):
print('我是外部方法')
demo2 = Demo()
demo2.run = MethodType(run,demo2)
# demo.run()
demo2.run()
七、静态方法
#静态方法使用
class Demo:
@staticmethod
def static_Dom():
print('static')
def run(self):
self.static_Dom()
print('你好陈旭恒')
Demo.static_Dom()