@property 将函数属性伪装成数据属性 静态属性
@classmethod #类方法,专门给类使用,与实例无关,类方法只能访问类相关的属性,不能访问实例属性(与实例无关。。。)
@staticmethod #类的工具包,staticmethod静态方法只是名义上的归属类管理,不能使用类变量和实例变量
class Student:
date = 'testdate'
#姓名,性别,年龄
def __init__(self,stu_name,stu_sex,stu_age,length,width,heigh):
self.stu_name = stu_name
self.stu_sex = stu_sex
self.stu_age = stu_age
self.length = length
self.width = width
self.heigh = heigh
@classmethod #类方法,专门给类使用,与实例无关,类方法只能访问类相关的属性,不能访问实例属性(与实例无关。。。)
def go_school(cls,x):
print('--->',cls,cls.date,x)
# def go_school(self):#,vehicle
# print('%s骑着一个风似风火似火的上学了'%self.stu_name)#,vehicle
# return 1
@property #将函数属性伪装成数据属性
def cal_area(self):
print('%s 身高%s身宽%s 体积%s'%(self.stu_name,self.heigh,self.width,self.heigh*self.width))
@staticmethod #类的工具包,staticmethod静态方法只是名义上的归属类管理,不能使用类变量和实例变量
def test1(x,y): #类和实例都可以调用
print(x,y)
def test2(x,y): #没有任何意义,类可调用,实例不能调用,self自动传
print(x,y)
stu1 = Student('李大江','男',18,2,0.2,2)
# print(stu1.cal_area) #函数属性伪装成数据属性的方式去调用
# print(stu1.stu_name)
Student.go_school(1)
实例:只有数据属性
类:有数据属性和函数属性
实例对象:可以调用类的数据属性和函数属性(依据函数作用域)
@property(静态属性)---->将函数属性,伪装成数据属性访问
类:不能调用 (调用只能拿到一个内存地址,并不会执行(拿到内存地址没什么用))
实例:可以调用
@classmethod(类方法)---->与类绑定,与实例无任何关系
类:可以调用
实例:不可以调用 (其实可以调用d1.test_classmethod(),不会出错,但是一般不会这样定义和调用)
@staticmethod(静态方法-类的工具包)---->不与类绑定,也不与对象绑定,名义上归属类管理,但是不能调用类属性和实例属性
类:可以调用
实例:可以调用
class Desk_base(object):
def f2(self):
pass
class Desk(Desk_base):
i = 'i类属性' #类属性
#类:不可以调用
#实例对象:可以调用
#实例属性
def __init__(self,name,width,length,heigh):
self.name = name #实例属性
self.width = width
self.length = length
self.heigha = heigh
#类:可以调用
#实例:不可以调用
#定义函数属性,但是没有任何意义,没有这样定义的,但不是错误
def test_not_self():
print('没有传self的方法')
#类:可以调用
#实例:可以调用
#类的函数属性
def test_self(self):
print('类的普通方法')
return self.name
#类:不能调用(调用只能拿到一个内存地址,并不会执行)
#实例:可以调用
#与实例绑定,将函数属性,伪装成数据属性
@property # 静态属性
def test_property(self):
return self.name
#类:可以调用
#实例:不可以调用(其实可以调用d1.test_classmethod(),不会出错,但是一般不会这样定义和调用)
#与类绑定,与实例无任何关系
@classmethod #类方法
def test_classmethod(cls):
'''
类方法不能调用实例属性
可以调用类方法或类属性
:return:
'''
return cls.i
#类:可以调用
#实例:可以调用
#不与类绑定,也不与对象绑定,名义上归属类管理,但是不能调用类属性和实例属性
@staticmethod #静态方法(类的工具包)
def test_staticmethod():
return '静态方法'
d1 = Desk('zk',100,100,101)
'''
实例:只有数据属性
类:有数据属性和函数属性
实例对象:可以调用类的数据属性和函数属性(依据函数作用域)
@property(静态属性)---->将函数属性,伪装成数据属性访问
类:不能调用 (调用只能拿到一个内存地址,并不会执行(拿到内存地址没什么用))
实例:可以调用
@classmethod(类方法)---->与类绑定,与实例无任何关系
类:可以调用
实例:不可以调用 (其实可以调用d1.test_classmethod(),不会出错,但是一般不会这样定义和调用)
@staticmethod(静态方法-类的工具包)---->不与类绑定,也不与对象绑定,名义上归属类管理,但是不能调用类属性和实例属性
类:可以调用
实例:可以调用
'''