函数是直接调用函数名调用的
方法是类的一部分
函数与方法的区别
装饰器,像访问属性一样调用方法
定义类的方法
__dict__打印类的构造方法里的属性


用@property定义的函数,可以再调用时,直接访问属性使用,不需要引用的时候加括号()
类方法是@classmethod,带入参数是cls(默认使用)
定义类的方法
#函数
#方法:类的内部函数为方法,其他单写的为函数
class Programer(object):
hobby='Play Computer'
"""docstring for Programer"""
def __init__(self, name,age,weight):
super(Programer, self).__init__()
self.name = name #普通变量
self._age = age #私有变量,但可以外部访问 self.__weight = weight #私有变量,但可以通过_Programer.__weight来访问
@classmethod
def get_hobby(self):
return self.hobby #@classmethod直接Programer.get_hobby访问,类似于C的静态
@property
def get_weight(self): 定义属性 return self.__weight
def self_introductioon(self): #通过类的实例来访问 print ('My Name is %s \nI am %s years old\n' % (self.name,self._age))
if __name__=='__main__':
programer=Programer('lrf',25,80)
print (dir(programer)) #类的属性,包括object之类的
print (programer.__dict__) #类的属性,内部属性 print (Programer.get_hobby())
print (programer.get_weight)
programer.self_introductioon()
函数是直接用函数名调用的,而方法是类的一部分。
类中方法的装饰器:
classmethod和property
classmethod:调用类方法时直接用类名调用,
property:调用时用对象加方法不用加括号来调用(就类似访问一个属性)
python中一切皆对象,所以类中的方法可以直接替换成另一个属性,比如字符串
函数是直接调用来实现的
方法是通过对象调用来实现的
@classmethod 类方法的装饰器
@property 属性的装饰器 :调用函数不需要()
programer.get_weight 即可
@classmethod
调用时用类名(大写的那个),而不是某个对象
@property
想访问属性一样调用方法
Python 中一切方法皆对象:
所以方法的访问控制:
跟属性一样,也是基本没有
一切靠自觉...
函数:直接用函数名调用的
方法:类的一部分
__init__是构造函数
classmethod类似于C++的静态成员函数,直接使用类名进行访问
property的调用使用 对象名.属性名,与一般函数不同后面不用加括号
object.method()
func()
@classmethod: static method in a class
class.classmethod
@property: convert method into a field of the class
class Programer(object):
hobby='Play video games'
def __init__():...........
@classmethld
def get_hobby(cls):
return cls.hobby
@property
def get_weight(self):
return self.__weight
main:
programer_albert=Programer('Albert', 25, 80)
print(Programer.hobby)
print(programer_albert.get_weight)
函数和方法
上一个截图
@classmethod方法,类似于java的静态方法,直接用类名.方法()调用
@property方法,把方法看成是类的属性,调用类的实例对象.方法
函数和方法最大的区别在于:
函数仅仅是一段供人调用代码串,处于游离状态:
而方法,是依附于某个类中,供其他程序调用
函数与方法的区别:
函数:直接调用函数名的方式
方法:必须与对象结合使用,依附于类
类的方法可以看做类的属性,也没有访问控制(与类的属性一致)。
两个装饰器:
@classmethod,类似直接在类里定义属性,调用时用类名,而不是某个对象
@property,原调用方法:对象名.方法名(),现调用方法:像访问属性一样调用方法
class Programer(object):
hobby = 'Play Computer'
def __init__(self, name, age, weight):
self.name = name
self._age = age
self.__weight = weight
@classmethod
def get_hobby(cls):
return cls.hobby
@property
def get_weight(self):
return self.__weight
def self_introduction(self):
print 'My name is %s \nI am %s years old\n' % (self.name, self._age)
if __name__ == '__main__':
programer = Programer('Albert', 25, 80)
print dir(programer)
print Programer.get_hobby() #用类名Programer调用
print programer.get_weight #像访问属性一样,不用加括号
programer.self_introduction()
@classmethod
@property
函数和方法的区别
@property 装饰的 method 调用的时候就不用()了. @classmethod 装饰的方法,需要类名来调用.
请输入笔记内容...
函数是直接用函数名调用的
方法是类的一部分
@classmethod:调用的时候用类名,而不是某个对象
@property:像访问属性一样调用方法