-
1.类的成员
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('1')
obj2 = Foo('2')
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)