class A:
    pass


class B:
    pass


class C(A):
    pass


class D(A, B):
    pass


print(A.__bases__)
print(B.__bases__)
print(C.__bases__)
print(D.__bases__)

(<class 'object'>,)

(<class 'object'>,)

(<class '__main__.A'>,)

(<class '__main__.A'>, <class '__main__.B'>)

在python3中:

如果一个类不继承任何类,那么它的基类就是object。我们称这个类是新式类

如果一个类继承指定的类,那么它的基类就是这些指定的类。

 

class Animal:
    def __init__(self):
        print('执行Animal.__init__')
        self.func()  # 要注意self到底代表谁

    def eat(self):
        print('{} eating'.format(self.name))

    def drink(self):
        print('{} drinking'.format(self.name))

    def func(self):
        print('Animal.func')


class Dog(Animal):
    def guard(self):
        print('guarding')

    def func(self):
        print('Dog.func')


dog = Dog()

打印的是Dog.func。

在dog = Dog()这一步中,Dog类在调用__init__方法前,会先创建一个self对象,代表dog实例。由于Dog类自己没有__init__方法,于是会去调用父类的__init__方法,同时self也会作为参数传递给

父类的初始化方法。

所以self.func调用的是dog对象自己的func方法。

 

如果想调用父类的方法,必须明确调用。

父类.方法名()

 

super是python3中用法。

 

from abc import abstractmethod, ABCMeta


class SwimAnimal(metaclass=ABCMeta):
    @abstractmethod
    def swim(self):
        pass


class FlyAnimal(metaclass=ABCMeta):
    @abstractmethod
    def fly(self):
        pass


class WalkAnimal(metaclass=ABCMeta):
    @abstractmethod
    def walk(self):
        pass


class Tiger(WalkAnimal, SwimAnimal):
    def walk(self):
        pass

    def swim(self):
        pass

多继承,接口类。

 

 

 

 

 

 

class Person:
    def __init__(self, name, password):
        self.name = name
        self.__password = password
        # 双下划线是私有属性,无法在外部调用

wang = Person('wang', '123')

print(wang.name)

print(wang.__dict__)

alex

{'name': 'alex', '_Person__password': '123'}

 

class Person:
    def __init__(self, name, password):
        self.name = name
        self.__password = password
        # 双下划线是私有属性,无法在外部调用

    def get_pwd(self):
        return self.__password


wang = Person('wang', '123')
print(wang.name)
print(wang.get_pwd())

 

 

 

 

 

取值和设置值,都可以通过property进行关联。

 

 

 

posted @ 2019-11-05 20:01  道霖  阅读(173)  评论(0)    收藏  举报