python 如何调用类的方法
![[��ǩ:����] [��ǩ:����]](https://www.xuefen.net//file/upload/img/7/66.jpg)
使用方法:
class A(object):
def foo(self,x):
#类实例方法
print "executing foo(%s,%s)"%(self,x)
@classmethod
def class_foo(cls,x):
#类方法
print "executing class_foo(%s,%s)"%(cls,x)
@staticmethod
def static_foo(x):
#静态方法
print "executing static_foo(%s)"%x
调用方法:
a = A()
a.foo(1) //print : executing foo(<__main__.A object at 0
xb77d67ec>,1)
a.class_foo(1) //executing class_foo(<class '__main__.A'>,1)
A.class_foo(1) //executing class_foo(<class '__main__.A'>,1)
a.static_foo(1) //executing static_foo(1)
A.static_foo(1) //executing static_foo(1)
类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用。
类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参数。
python定义的类怎么用
python定义的类使用方法:
使用“obj=类名()”语句将类实例化,然后用“obj.函数名”就可以调用类里面定义的各种函数了
示例如下:
将Bili类实例化,然后就可以使用类里的函数
更多Python知识,请关注:Python自学网!!
python 类方法,静态方法,普通方法比较2019-03-22
1.类方法用@classmethod:
用途:一般用来对类属性进行限制性操作
用法:该方法的调用者(不管是类调用还是实例调用),会默认把该类作为第一个参数传进来(调用者不必显示指定),这样该方法内部可以获取到该类,从而对类属性进行操作。实际用途可以用来限制对类属性的访问,不管是类调用还是实例调用,能保证修改的都是类属性。
2.静态方法用@staticmethod:
用途:用来实现工具性方法
用法:如果方法内部没有涉及到对实例属性的操作,可以把该方法定义为静态方法,不管是类调用还是实例调用,都能直接调用该方法实现相应功能。
3.普通方法:
用途:实例调用的方法
用法:方法内部涉及到对实例属性的操作,实例调用该方法时会自动默认将实例的引用作为第一个参数传进去。也可以用类直接访问,不过这样访问时需要手动传入第一个参数,也就是一个实例的引用。
附加: @property的使用(从语义规范上来说,只用于普通方法,也就是对实例变量进行控制,但也可以强行用来对类变量进行控制)
对私有变量的控制访问可以借鉴java的get、set方式。这没有任何问题。唯一的问题就是不直观,把对变量的访问变成了对方法的访问。而@property的作用就是还原这种直观的访问方式,可以像访问变量一样访问@property修饰的方法。注意:如果不想让别人修改某变量,可以用不写@XXX.setter方法来实现。
总结:不管方法是哪一种方法(类方法,静态方法,还是普通的实例方法),都可以用类直接访问和用实例进行访问,只是参数多传一个多传一个的问题。更重要的是语义的规范,语法上没什么问题。
python3 静态方法和类方法的区别
python中,方法分为三类实例方法、类方法、静态方法。代码如下:
class Test(object):
def InstanceFun(self):
print("InstanceFun");
print(self);
@classmethod
def ClassFun(cls):
print("ClassFun");
print(cls);
@staticmethod
def StaticFun():
print("StaticFun");
t = Test();
t.InstanceFun();# 输出InstanceFun,打印对象内存地址“<__main__.Test object at 0
x0293DCF0>”
Test.ClassFun(); # 输出ClassFun,打印类位置 <class '__main__.Test'>
Test.StaticFun(); # 输出StaticFun
t.StaticFun(); # 输出StaticFun
t.ClassFun(); # 输出ClassFun,打印类位置 <class '__main__.Test'>
Test.InstanceFun(); # 错误,TypeError: unbound method instanceFun() must be called with Test instance as first argument
Test.InstanceFun(t); # 输出InstanceFun,打印对象内存地址“<__main__.Test object at 0
x0293DCF0>”
t.ClassFun(Test); # 错误 classFun() takes exactly 1 argument (2 given)
(来源:学分高考 https://www.xuefen.net)文章共3312字