Python面向对象之七:类成员
一、按区域划分
按照类成员的区域划分,分为静态属性(变量)和动态属性(方法):
1、静态属性(变量)
静态属性是指定义在类中的变量,用于表示类自身的属性。
1、公有静态属性
class Person:
name = '晴朗' #公有静态属性
def sleep(self):
print(Person.name)
class Mother(Person):
def temp(self):
print(Person.name)
print(Person.name) #类外部可以访问
per = Person()
per.sleep() #本类的实例化对象内部可以访问
print(Mother.name) #派生类外部可以访问
mother = Mother()
mother.sleep() #派生类实例化对象内引用的父类方法可以访问
mother.temp() #派生类实例化对象内引用的自己方法可以访问
分析:在公有静态属性中,类外部可以访问、本类的实例化对象内部可以访问、派派生类外部可以访问、派生类实例化对象内引用的父类方法可以访问、派生类实例化对象内引用的自己方法可以访问,就是哪里都能访问到!
2、私有静态属性
class Person:
__name = '晴朗' #私有静态属性
def sleep(self):
print(Person.__name)
class Mother(Person):
def temp(self):
print(Person.__name)
print(Person.__name) #不可以在类外部访问
per = Person()
per.sleep() #类的实例化对象内部可以访问
print(Mother.__name) #不可以派生类外部访问
mother = Mother()
mother.sleep() #派生类实例化对象内部引用父类的方法可以访问
mother.temp() #派生类实例化对象内部引用自己的方法不可以访问
分析:在私有静态属性中,仅在类内部(基类内部和派生类内部调用父类未重写的方法)可以访问。
3、公有对象属性
class Person:
def __init__(self):
self.name = '晴朗'
def sleep(self):
print(self.name)
class Mother(Person):
def temp(self):
print(self.name)
# print(Person.name) #类外部不能访问
per = Person()
per.sleep() #类的实例化对象内部可以访问
print(per.name) #类实例化对象可以访问
# print(Mother.name) #派生类外部不可以访问
mother = Mother()
mother.sleep() #派生类实例化对象内部引用父类的方法可以访问
mother.temp() #派生类实例化对象内部引用自己的方法可以访问