python必ず学の対象者の基盤の相続の静止画と余りの実態

前文

2。相続発進、テンニジ

2.2あまり相続

コード解析:


# 一对多,多对一的关系

class Father1(object):
    def a(self):
        print('第一个父亲')
        pass
    def Repeat(self):
        print('这是第一个父亲的同名方法')
class Father2(object):
    def b(self):
        print('第二个父亲')
        pass
    def Repeat(self):
        print('这是第二个父亲的同名方法')
class sun(Father1,Father2):#一个儿子继承两个父亲
    pass
c=sun();#创建对象
c.a();# 调用父類の方法
c.b();

# 如果同名调用哪个

c.Repeat();#输出结果是调用了第一个父亲的

# 我们可以通过__mro__函数查看解析顺序
print(sun.__mro__)
#(<class '__main__.sun'>, <class '__main__.Father1'>, <class '__main__.Father2'>, <class 'object'>)
'''输出
第一个父亲
第二个父亲
这是第一个父亲的同名方法
(<class '__main__.sun'>, <class '__main__.Father1'>, <class '__main__.Father2'>, <class 'object'>)
'''

2.4発進父類の方法


class Father(object):
    def __init__(self,name):
        self.name=name
        pass
class sun(Father):
    def __init__(self,name):#重新构建父類の方法
        #第一种
        super(sun, self).__init__(name)
        # 第二种方法
        #super().__init__(name)
        # 第三种方法
        #Father.__init__(self,name)
        # 添加新的功能
        self.name+='你好'
        print(self.name)
a=sun('dog')

4類の属性と実例属性。

  1. 類の属性:は、類の対象が持つ属性られる類の対象実例対象共同訪問の使用
  2. 実例属性:しか、実例の対象が訪問
# 属性:類の属性和実例属性

class Test(object):
    Ch='python'#類の属性
    def __init__(self,name):
        self.name=name#実例属性
        pass
test=Test('love')#创建実例対象
print(test.Ch)#可以访问類の属性
print(Test.Ch)#可以访问
#print(Test.name)#類の対象不可以访问実例属性
print(test.name)#実例対象可以访问実例属性
#test.Ch='刘德华'  #通过実例対象 对類の属性进行修改 可以吗? 不可以的,
#print(Test.Ch)類の属性没有更改

#可是通过類の対象对実例対象进行修改就可以,这相当于一个等级,先类才能到方法

'''输出
python
python
love
'''

五類の方法と静止画の方法。

  1. 類の方法類の対象が保有する方法、必要で饰器@classmethod来表示その類の方法を類の方法について、最初のパラメータは類をしなければならない対象一般、cls最初のパラメータとして、類を通じてできる方法を対象に、実例を対象に発進
  2. 対比
class  People:
    country='china'
    #類の方法 用 classmethod 来进行修饰
    @classmethod
    def get_country(cls):
        return cls.country #访问類の属性
        pass
    @classmethod
    def change_country(cls,data):
        cls.country=data #修改類の属性的值  在類の方法中
        pass
    @staticmethod
    def getData():
        return People.country  #通过類の対象去引用
        pass
    @staticmethod
    def add(x,y):
        return x+y
        pass


print(People.add(10,56)) #带有参数的静态方法

# print(People.getData())

# print(People.get_country()) #通过類の対象去引用
p=People()
print(p.getData()) #注意 一般情况下 我们不会通过実例対象去访问静态方法
# print('実例対象访问 %s'%p.get_country())
# print('-----------------修改之后---------------------------')
# People.change_country('英国')
# print(People.get_country()) #通过類の対象去引用

  1. なぜ静的な方法を使うのでしょう
# demo  返回当前的系统时间
import  time # 引入第三方的时间模块
class TimeTest:
    def __init__(self,hour,min,second):
        self.hour=hour
        self.min = min
        self.second = second

    @staticmethod
    def showTime():
        return time.strftime("%H:%M:%S",time.localtime())
        pass
    pass

print(TimeTest.showTime())
t=TimeTest(2,10,15)
print(t.showTime()) #没有必要通过这种方式去访问 静态方法

私を励まし時の讃てください

ソースネットワーク 戻る