class Animal(object): pass class Dog(Animal): def __init__(self,name): self.name = name class Cat(Animal): def __init__(self,name): self.name = name class Person(Animal): def __init__(self,name): self.name = name class Employee(Person): def __init__(self,name,salary): super(Employee,self).__init__(name) self.salary = salary class Fish(object): pass class Salmon(Fish): pass class Halibut(Fish): pass rover = Dog("Rover") satan = Cat("satan") mary = Person("Mary") mary.pet = satan frank = Employee("Frank",12000) frank.pet = rover flipper = Fish() crouse = Salmon() harry = Halibut()
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950习题45
关于泥鳅和鱼:
class和object是同样的东西,在不同时间名字不同而已。
ex:鱼和泥鳅都是鱼,但泥鳅是比较特殊的鱼。
鱼是class,描述具有同类属性的实例的概括性词汇。泥鳅是新的class,具有一些特定的属性。
ex:小方是一条泥鳅,所以他是泥鳅的一个实例instance(泥鳅也是鱼的一个实例)。你使用它做了道菜于是它就成为了对象object。
小方是泥鳅,泥鳅又属于鱼。所以对象属于类,一个类又属于另一个类。
区分class和object
is-a谈论两者以类的关系相互关联。鱼和泥鳅的关系
has-a两者无共同点,仅是互为参照的情况下。泥鳅和鳃的关系
为什么添加object,有什么含义:
小写的object作为一个类,在创建新类时把他继承下来。
class xxx(object)#python 3 中已经默认加上object
在创建class时会继承object方法,拥有除了自己定义的方法之外的一系列操作对象。
若不加object意味着不继承,则新类只有_doc_,_module_和自己定义的方法。
把class当object使用,创建时不新建方法,然后正常调用??不知道有没有理解错误题目意思
*执行函数时一直提示说name “xxx” is not defined。为什么,难道是占位符过多了。单纯从语法看没问题啊。
还是我调用时出了错。。
“是啥”我感觉两方都是类,一个是基类,一个是新类
“有啥”对应的是类里的方法。
多重继承:一个类可以同时继承多个父类的行为和特征功能。可能造成同一功能多次重写,带来维护问题。
class A(object):
class B(A):
class C(A):
class D(B, C):
通过 super().init(self)方法时,A 虽然被继承了两次,但__init__()只调用一次:
python如何实现类的继承:对于每一个定义的类,会有一个方法解析顺序列表(MRO)method resolvation order
print(C.mro)得到一个元组。对元组的从左到右依次查找,直到查到待查的属性为止。
当使用super()函数时,python会继续从MRO中的下一个类开始搜索,只要每一个重新定义过的方法(比如init())都使用了super()函数,并且调用了他们一次,那么控制流最终就可以遍历整个MRO列表,并且让每个方法都只被调用一次
相关知识
航母上老鼠泛滥咋办?美国养猫没用,中国“笨办法”最治
让狗狗到合适的地方去排泄
鹩哥学人语能学多久
学宠物美容需要学多长时间?
兽医寄生虫学与寄生虫病学教研室
学宠物美容大概学多久
兽类学
学宠物美容去哪里学比较好点
土地资源学第三章
动物外科手术学
网址: 笨办法学python45 https://m.mcbbbk.com/newsview544114.html
上一篇: 猫咪犯错还不服管教,主人怎么做才 |
下一篇: 2014年届动物医学与动物科学本 |