python高级总结类属性 实例属性 实例方法 / 静态方法 / 类方法

类属性  实例属性

# 类属性

class people:  

 name="Tom"    #公有的类属性  

 __age=18      #私有的类属性

p=people()print(p.name)   #实例对象

print(people.name)  #类对象

# print(p.__age)    #错误 不能在类外通过实例对象访问私有的类属性

print(people.__age) #错误 不能在类外同过类对象访问私有的类属性

实例属性
class people:

   name="tom"def __init__(self.age):

    self.age=age

p=people(18)

print(p.name)

print(p.age)    #实例属性是实例对象特有的,类对象不能拥有

print(people.name)#print(people.age)  #错误:实例属性,不能通过类对象调用
 

class Test:  

  num=100 #类属性    

def __init__(self):      

 self.age=18     #实例属性

test1=Test()

test2=Test()

# test1.age=19

# test2.age=20

print(test1.num)    #100

test1.num=200       #如果通过对象去修改类属性,那么Python会自动给这个对象和这个类属性相同名字的实例属性

print(test1.num)    #200,只是修改了副本

print(Test.num)     #100

del test1.num        #删除之后,仍能打印print(test1.num)

实例方法 / 静态方法 / 类方法

 
  1. class Methods:

  2. def imeth(self, x): print(self, x) # 实例方法:传入的是实例和数据,操作的是实例的属性

  3. def smeth(x): print(x) # 静态方法:只传入数据 不传入实例,操作的是类的属性而不是实例的属性

  4. def cmeth(cls, x): print(cls, x) # 类方法:传入的是类对象和数据

  5. smeth = staticmethod(smeth) # 调用内置函数,也可以使用@staticmethod

  6. cmeth = classmethod(cmeth) # 调用内置函数,也可以使用@classmethod

  7. obj = Methods()

  8. obj.imeth(1) # 实例方法调用 <__main__.Methods object...> 1

  9. Methods.imeth(obj, 2) # <__main__.Methods object...> 2

  10. Methods.smeth(3) # 静态方法调用 3

  11. obj.smeth(4) # 这里可以使用实例进行调用

  12. Methods.cmeth(5) # 类方法调用 <class '__main__.Methods'> 5

  13. obj.cmeth(6) # <class '__main__.Methods'> 6

猜你喜欢

转载自blog.csdn.net/weixin_43706473/article/details/85948573