码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-08-29 16:58:25      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:哈哈   xiaomi   实例   rac   name   直接   str   小明   class   

变量:


实例变量(字段):
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)


 















 

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

标签:哈哈   xiaomi   实例   rac   name   直接   str   小明   class   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!