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

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)


 















 


























































































以上是关于面向对象中:变量,方法,属性相关知识及示例的主要内容,如果未能解决你的问题,请参考以下文章

面向对象基础部分及模块

python面向对象知识点疏理

python面向对象基础

python学习笔记-面向对象基础

JavaScript面向对象及相关知识

面向对象的一些基础知识