class Province:
#静态字段,属于类
country = '中国'
def __init__(self,name):
#普通字段,属于对象
self.name = name
print(Province.country)
# print(Province.name)
shanxi = Province('陕西')
print(shanxi.name)
静态字段是属于类本身的字段,保存在类中,执行可以通过对象访问也可以通过类访问
普通字段只有在创建对象的时候回产生,属于对象的,执行只能通过对象访问
方法:
1,普通方法,保存在类中,由对象调用,self->对象
class Foo:
def Bar(self):
print('bar')
obj = Foo()
obj.Bar()
Foo.Bar(obj)
2,静态方法,加一个装饰器@staticmethod,保存在类中,由类直接调用
class Foo:
@staticmethod
def sta():
print('123')
Foo.sta()
3,类方法,保存在类中,由类直接调用,cls->当前类
class Foo:
@classmethod
def classMethod(cls):#class缩写
# cls是类名
print(cls)
print('classmethod')
Foo.classMethod()
#####应用场景
如果对象中需要保存一些值,执行某功能时,需要使用对象的值,使用普通方法
不需要任何对象中的值,用静态方法
类方法基本上没什么用处,可以使用静态方法代替
属性标签@property:
class Foo:
def __init__(self):
self.name = 'a'
def bar(self):
print('bar')
@property
def per(self):
return 1
obj = Foo()
r =obj.per
print(r)