一、定義類的屬性
1、直接在類中定義
2、在類的構(gòu)造函數(shù)中定義
二、訪問控制
python中沒有訪問控制,依靠python的編程規(guī)范,命名規(guī)則控制。
class Programmer:
????def __init__(self, name, age, salary):
????????self.name = name
????????self._age = age
????????self.__salary = salary
programmer = Programmer('Mike', 23, 100000)
print(programmer.__dict__)
?# 輸出結(jié)果為:?{'name': 'Mike', '_age': 23, '_Programmer__salary': 100000}
print(programmer.name)
?# 輸出結(jié)果為:Mike
print(programmer._age)
?# 輸出結(jié)果為:23
print(programmer._Programmer__salary)
?# 輸出結(jié)果為:100000
三、區(qū)分函數(shù)和方法的概念
函數(shù)是直接通過函數(shù)名調(diào)用的;方法是依附于一個(gè)類,通過對象名.方法名調(diào)用。
四、類的方法
python中類的方法也可以看作類的屬性。
方法的訪問控制和屬性的訪問控制相同。
@classmethod
調(diào)用方法時(shí)用類名調(diào)用,而不是某個(gè)實(shí)例。
@property
像訪問屬性一樣調(diào)用方法
示例如下:
class Programmer:
????????hobby ='playing games'
? ? ????def __init__(self, name, age, salary):
????????????????self.name = name
????????????????self._age = age
????????????????self.__salary = salary
????????def get_name(self):
????????????????print(self.name)
????????@classmethod
? ????? def get_age(cls):
????????????????print(cls.hobby)
????????@property
? ? ????def get_salary(self):
????????????????print(self.__salary)
programmer = Programmer('Mike', 23, 100000)
print(dir(programmer))
programmer.get_name()
Programmer.get_age()
programmer.get_salary