python学习

Python 类,实例,方法,属性

2017-02-22  本文已影响37人  geekMole

注:在runoob上学Python发现上面好多坑啊,有些描述根本就是一点不准确,在此总结一下

参考--Python的实例方法,类方法,静态方法之间的区别及调用关系

# 类定义
class People:
    # 定义基本属性
    # 类属性
    classp = 888
    name = 'people'
    age = 0
    # 定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    # 定义构造方法
    # 定义在__init__()方法里的变量就是实例属性,这些属性只有被创建时才会被创建。
    # 当类属性与实例属性同名时,一个实例访问这个属性时实例属性会覆盖类属性,但类访问时不会。
    def __init__(self, n, a, w):
        self.name = n
        self.age = a
        # 私有实例属性
        self.__weight = w
        self.height = 166

        self.score = 12
    # 私有实例方法
    def __foo(self):
        print('执行私有实例方法')

    # 实例方法默认self为参数,self是实例
    def speak(self):
        self.number = 22856
        print("%s 说: 我 %d 岁。" %(self.name,self.age))
        self.__foo()

    # 私有类方法
    @classmethod
    def __classfoo(cls):
        print('执行私有类方法')
    # 类方法默认类做参数
    @classmethod
    def classRun(cls):
        print("gogogo")
        cls.__classfoo()

    # 静态方法
    @staticmethod
    def staticfunc():
        print('staticFuc')

    # 普通方法(会报没有参数的错误但是不影响执行)
    def function():
        print('normalFunction')

# 实例化类
p = People('runoob', 10, 30)
q = People('runhero', 11, 31)
# 实例调用实例方法
p.speak()
# 实例调用静态方法
p.staticfunc()
# 实例调用普通方法,无法调用
# p.function()#错误
# 类调用实例方法带实例参数
People.speak(q)
# 类调用静态方法
People.staticfunc()
# 类调用普通方法
People.function()
# 类调用类方法
People.classRun()

# 改变实例属性只影响相应实例
p.age = 80
# 改变类属性,影响类和对应实例(注意类属性和实例属性重名时,实例访问时实例属性覆盖类属性)
People.classp = 80
# 实例可访问类属性,类不可访问实例属性
# print(people.height)#错误
# 实例可以访问类属性classp
print(p.name,p.age,p.height,p.classp,p.score,p.number)
# 类访问类属性
print(People.name, People.age)
p.classp = 886
print(q.name, q.age, q.height, q.classp, q.score)
上一篇 下一篇

猜你喜欢

热点阅读