python面向对象中的,变量,方法与属性
2021-07-11 12:07
标签:base isp 返回 object @class 执行 验证 count spl python面向对象中的,变量,方法与属性 标签:base isp 返回 object @class 执行 验证 count spl 原文地址:https://www.cnblogs.com/journey-mk5/p/9550951.html1. 类的成员
class Foo:
# 方法
def __init__(self,name):
# 实例变量/字段
self.name = name
# 方法
def func(self):
pass
# obj,Foo类的对象
# obj,Foo类的实例
obj = Foo(‘朱奎峰‘)
成员共分为三类:
变量:
- 实例变量(字段)
- 公有实例变量(字段)
- 私有实例变量(字段)
- 类变量(静态字段)
- 公有类变量(静态字段)
- 私有类变量(静态字段)
实例一:
class Foo:
# 类变量(静态字段)
country = "中国"
def __init__(self,name):
# 实例变量(字段)
self.name = name
def func(self):
pass
obj1 = Foo(‘季红‘)
obj2 = Foo(‘王晓东‘)
Foo.country
思考题: 如何验证儿子都不知道私有字段的存在.
无法访问:
class Base(object):
__secret = "受贿"
class Foo(Base):
def func(self):
print(self.__secret)
print(Foo.__secret)
obj = Foo()
obj.func()
可以访问:
class Base(object):
__secret = "受贿"
def zt(self):
print(Base.__secret)
class Foo(Base):
def func(self):
print(self.__secret)
print(Foo.__secret)
obj = Foo()
obj.zt()
方法:
- 实例方法
class Foo(object):
def __init__(self, name):
self.name = name
# 实例方法
def func(self):
print(self.name)
obj = Foo(‘..‘)
obj.func()
- 静态方法
class Foo(object):
def __init__(self, name):
self.name = name
# 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
@staticmethod
def display(a1,a2):
return a1 + a2
Foo.display(1,3)
- 类方法
class Foo(object):
# 类方法,cls是类
@classmethod
def show(cls,x1,x2):
print(cls,x1,x2)
# 执行类方法
Foo.show(1,8)
面试题: 静态方法/类方法和实例方法的区别?
属性(通过方法改造出来):
示例:
class Foo(object):
def __init__(self):
pass
@property
def start(self):
return 1
@property
def end(self):
return 10
obj = Foo()
print(obj.start)
print(obj.end)
"""
# 总结:
# 1. 编写时
# - 方法上方写 @property
# - 方法参数:只有一个self
# 2. 调用时:无需加括号 对象.方法
# 3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
"""