首页 > 其他 > 详细

面向对象中:变量,方法,属性相关知识及示例

时间:2018-08-29 16:37:00      阅读:133      评论:0      收藏:0      [点我收藏+]

变量:


实例变量(字段):
class Foo:
def __init__(self,name,age):
self.__name = name #私有实例变量,只能内部调用,外部不能调用,子类不能调用
self.age = age #公有实例变量,都可以调用

def func(self):
pass
类变量(静态字段):
class Foo:
__race = ‘人类‘ #私有静态字段,只能内部调用,外部不能调用,子类不能调用
country = ‘中国‘ #公有静态字段

def __init__(self):
pass

方法:
实例方法:
class Foo:
def __init__(self,name):
self.name = name

def func(self): #使用对象封装的变量,至少有一个参数self
print(self.name)
obj = Foo(‘小明‘)
obj.func()

静态方法:
class Foo:
def __init__(self,name):
self.name = name

@staticmethod
def func(): #不使用对象封装的变量,左上写@staticmethod,可以没有参数self,也可以有多个参数,尽量使用类名.方法名()调用
print(‘哈哈哈)

obj = Foo(‘小明‘)
Foo.func()

类方法:
class Foo:
def __init__(self,name):
self.name = name

@classmethod
def func(cls): #方法上方写@classmethod,至少有一个参数cls,在调用的时候cls会自动传入当前类,尽量使用类名.方法名()调用
print(666)

obj = Foo(‘xiaoming‘)
Foo.func()

静态方法跟类方法的区别:
  静态方法:
  方法上方写@staticmethod
  方法参数可有可无
  无需调用对象中已经封装的值的时候,可以使用静态方法
  类方法:
  方法上方写@classmethod
  至少有一个参数 cls,也可以有多个参数,cls会默认传值,传进去的是当前类
  如果在方法中会使用到当前类,那么就可以使用类方法



属性:
class Foo:
def __init__(self,name):
pass

@property
def func(self): #方法上方写@property,方法参数只有一个self,无需加(),直接对象.方法就可以了
return 10 #对于简单的方法,当无需传参,且有返回值的时候,可以使用@property

obj.Foo()
print(obj.func)


 















 

面向对象中:变量,方法,属性相关知识及示例

原文:https://www.cnblogs.com/lianghui-lianghui/p/9555096.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!