面向对象中:变量,方法,属性相关知识及示例
Posted lianghui-lianghui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象中:变量,方法,属性相关知识及示例相关的知识,希望对你有一定的参考价值。
变量:
实例变量(字段):
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)
以上是关于面向对象中:变量,方法,属性相关知识及示例的主要内容,如果未能解决你的问题,请参考以下文章