python面向对象的成员属性等

Posted 750657961

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python面向对象的成员属性等相关的知识,希望对你有一定的参考价值。

 

 


#类成员:
#字段 self.xy =qq 。 xy=qq
#普通字段 (保存在对象里面)
#直接通过点(.)+ 字段 进行调用
#静态字段 (保存在类里面)
#静态字段属于类,在内存只保留一份 。 把公共的字段 放到类中 ,节省内存等好处
#代码从上到下解释到类就创建了
#可以通过 类.静态字段 进行访问
#方法 def xx()
# (保存在类里面)
#通过点(.) + 方法名 + 括号 进行调研
#通过 类 点(.) 方法名也可以调用 。 还是要在前面先实例化一个对象


#静态字段
class human:
address = "earth" #静态字段
def __init__(self,age):
self.age = age # 普通字段

h1 = human(‘20‘)
print(human.address) #通过类访问 静态字段
print(h1.address) #通过对象访问 静态字段 : 对象--> 类 --> 静态字段
print(h1.age) #通过对象访问 普通字段


#静态方法
class Foo:
def bar(self):
print(‘普通方法‘)
@staticmethod # 添加此装饰器后变成静态方法
def bar1(a): # 此处已经不需要self 了
print(‘静态方法:%s‘ %a)

#f=Foo() # 不需要创建对象,也可以直接调用静态方法 (相当于一个函数了)
Foo.bar1(100) #通过类直接调用


#类方法
class Foo:
@classmethod
def classmd(cls): # cls 和 self意义差不多 ,此处写成 cls 。 cls 是当前类
print(cls) # cls 是类名,自动会传入
print(‘类方法‘)

Foo.classmd()



#属性
class Foo:
@property # 加了这个装饰器,p1 这个方法 调用起来就也可以和字段一样调用了。
def p1(self):
return 123
@p1.setter
def p1(self,var):
print(var)
@p1.deleter
def p1(self):
print(‘xx‘)
obj = Foo()
r=obj.p1 # 直接调用不需要括号 , 会直接调用 @property 下的 p1
print(r)
obj.p1=100 # 给他赋值(实际不会赋值), 会执行@p1.setter 下面的p1 (里面具体想做什么,你可以自己写) # 就是一个语法对应关系 和 赋值没关系
del obj.p1 # 删除它 (实际不会删除它), 会执行 @p1.deleter 下面的p1 # 就是一个语法对应关系 del 只是语法 不会删除的



以上是关于python面向对象的成员属性等的主要内容,如果未能解决你的问题,请参考以下文章

python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass

python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass

Python学习:17.Python面向对象(属性(特性),成员修饰符,类的特殊成员)

python面向对象之类成员

Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

python之路之前没搞明白4面向对象(封装)