python类相关

class A:
    def bar(self):
        print("BAR")
        self.f1()
class B(A):
    def f1(self):
        print("B")
class C:
    def f1(self):
        print("C")
class D(C,B):
    pass
obj = D()
obj.bar()
# 创建了类A、B、C、D;
# D继承了C和B,B继承了A,D内什么都不做,pass;
# 创建一个对象obj,类是D,当执行D的bar方法的时候会先从C里面寻找有没有bar方法;
# C内没有bar方法,然后继续从B里面查找,B里面也没有,B的父类是A,A里面有bar方法,所以就执行了A的bar方法;
# A的bar方法首先输出了BAR;
# 然后又执行了self.f1(),self=obj,相当于执行了obj.f1();
# 执行obj.f1()的时候先从C里面查找有没有f1这个方法,C里面又f1这个方法;
# 最后就执行C里面的f1方法了,输出了C
class Foo:
    #静态方法括号中没有self,其方法前一行要加上@staticmethod
    @staticmethod
    def static():
        print("static")
#静态方法通过类名+方法名即可执行
Foo.static()
#静态方法也可以通过对象去访问,对于静态方法用类去访问
obj = Foo()
obj.static()

  

class Province:

    #静态字段
    contry = "China"
    def __init__(self,name):
        self.name = name
    def show(self):
        print(Province.contry,self.name)
hebei = Province("河北")
hebei.show()
hubei = Province("湖北")
hubei.show()
# 类里面的成员类去访问,对象内的成员用对象去访问。

 

class Foo:
    def __init__(self):
        self.__Name = "huihuang"
# 通过特殊的方法访问
obj = Foo()
#一个下划线,一个类名,私有的变量名
print(obj._Foo__Name)

 

转载于:https://blog.ansheng.me/2016/06/python-full-stack-way-object-oriented-advanced.html

posted @ 2016-11-26 15:07  梦轻尘  阅读(219)  评论(0编辑  收藏  举报