写点什么

python-- 构造方法笔记

用户头像
许有加
关注
发布于: 4 小时前
python--构造方法笔记

构造方法:当一个对象被创建后,会立即调用构造方法

         有多个构造方法,只会执行最后一个构造方法,与 java 不同,Java 可以有多个构造方法,而 python 只有一个

    重写一般方法:无特殊要求

    特殊的构造方法:需要调用超类的构造方法,否则对象可能不会被正确初始化

        重写超类的构造方法:

            (1)调用未绑定的超类构造方法

            (2)使用 super 函数


#构造方法 class NewStyle(object):pass


class OldStyle:pass


class FooBar:#有多个构造方法,只会执行最后一个构造方法 def init(self):self.somevar = 42


def __init__(self,value=52):    self.somevar = valuedef __init__(self,key1,value=52):    self.somevar = value    self.key =key1
复制代码


f = FooBar('aaa')print(f.somevar)k = FooBar('xuyoujia')print(k.somevar,k.key)z = FooBar('xuyoujia')print(z.somevar,z.key)
class A:def hello(self):print('hello,I'm A')
class B(A):def hello(self):print('hello,I'm B')
a = A()b = B()a.hello()b.hello()
#如果继承的类没有实现超类的构造方法,有可能出现AttributError错误class Bird:def init(self):self.hungry = Truedef eat(self):if self.hungry:print('Aaaah...')self.hungry = Falseelse:print('No , thanks!')
b = Bird()
b.eat()
b.eat()
class SingBird(Bird):def init(self):#Bird.init(self) #1、调用未绑定的超类构造方法super(SingBird,self).init() #2、使用super函数self.sing1 = 'quawk'def sing(self):print(self.sing1)
sb = SingBird()#注:'SingBird' object has no attribute 'hungry' SingBird 未重写__init__方法,未初始化hungrysb.eat()
sb.sing()
sb.eat()sb.eat()
复制代码


用户头像

许有加

关注

还未添加个人签名 2019.02.11 加入

还未添加个人简介

评论

发布
暂无评论
python--构造方法笔记