多语言展示
当前在线:1352今日阅读:82今日分享:48

python类的继承与限制对象属性

# 继承# 定义一个类的时候需要设置以哪个类为基础# 如果不知道应该以哪个类为基础,就以object为基础# 所有的类都直接或者间接的以object为基础# object被称为根类# object和Richer对比:# object:父类,基类# Richer: 子类, 派生类
工具/原料
1

python3.6

2

pycharm

方法/步骤
1

class Richer(object):    def __init__(self, name, age, money):        # 公有属性,完全公开,在外部可以直接访问,可以被子类继承(在子类中可以直接使用)        self.name = name        # 受保护的,半公开,不建议外部直接访问,可以被子类继承        self._age = age        # 私有属性,不公开,不允许外部直接访问,不能被子类继承        # (其实本质上是被继承了,但是在子类中不能直接使用)        self.__money = money

2

# 定义方法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)

3

class SecondRicher(Richer):    def __init__(self, name, age, money, love):        # 初始化对象的时候,要先初始化父类部分        super(SecondRicher, self).__init__(name, age, money)        # 然后再初始化子类部分        self.love = love

4

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)

5

print('**子类对象**')sr = SecondRicher('allen', 18, 3, 'read')sr.eat()sr.show()sr.say_money()sr.play(6)

6

print('**父类对象**')richer = Richer('mayun', 20, 7)richer.eat()richer.show()

7

# 设置对象允许绑定的属性名# 类内部直接声明的类属性不允许使用。可以在类外部动态绑定。# 但是绑定以后相当于将这个变量名从允许列表中删除。# 这些属性名和类属性有冲突。

8

运行结果如下:

注意事项

注意,一个类的定义可能在两个步骤了,注意缩进。

推荐信息