python3.6
pycharm
class Richer(object): def __init__(self, name, age, money): # 公有属性,完全公开,在外部可以直接访问,可以被子类继承(在子类中可以直接使用) self.name = name # 受保护的,半公开,不建议外部直接访问,可以被子类继承 self._age = age # 私有属性,不公开,不允许外部直接访问,不能被子类继承 # (其实本质上是被继承了,但是在子类中不能直接使用) self.__money = money
# 定义方法def eat(self): print('我是%s,111111111' % self.name, type(self))def show(self): print('有钱人自我介绍:', self.name, self._age, self.__money)def say_money(self): print('我有%d个亿' % self.__money)
class SecondRicher(Richer): def __init__(self, name, age, money, love): # 初始化对象的时候,要先初始化父类部分 super(SecondRicher, self).__init__(name, age, money) # 然后再初始化子类部分 self.love = love
def play(self, n): print('哥一玩就是%d小时' % n, self.name, self._age)def show(self): print('富二代自我介绍:', self.name, self.love) # 调用父类方法 # super(SecondRicher, self).show() # Richer.show(self)
print('**子类对象**')sr = SecondRicher('allen', 18, 3, 'read')sr.eat()sr.show()sr.say_money()sr.play(6)
print('**父类对象**')richer = Richer('mayun', 20, 7)richer.eat()richer.show()
# 设置对象允许绑定的属性名# 类内部直接声明的类属性不允许使用。可以在类外部动态绑定。# 但是绑定以后相当于将这个变量名从允许列表中删除。# 这些属性名和类属性有冲突。
运行结果如下:
注意,一个类的定义可能在两个步骤了,注意缩进。