类
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进行关联。



 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号