1. 程式人生 > >成員/方法/屬性/私有

成員/方法/屬性/私有

都是 one code static 睡覺 訪問 pen lap ins

1.成員
  類裏面定義的變量和方法都被稱為成員(字段)
  創建對象:
    找類---->開辟空間(__new__)------>__init__()
  變量:
    1.成員變量
    2.類變量
      類名.變量 記住一定要用類名去操作
    可以綁定也可以修改

技術分享圖片
 1 class StarkConfig(object):
 2     list_display = []
 3     print("類變量的地址:", id(list_display))
 4 
 5     def __init__(self):
6 self.list_display = [] 7 print(id(self.list_display)) 8 9 def get_list_display(self): 10 self.list_display.insert(0, 33) 11 return self.list_display 12 13 14 s1 = StarkConfig() 15 s2 = StarkConfig() 16 r1 = s1.get_list_display() 17 print(r1) 18 r2 = s2.get_list_display()
19 print(r2) 20 """ 21 類變量的地址: 1885633733192 22 1885633733256 23 1885637388936 24 [33] 25 [33] 26 """ 27 28 class StarkConfig(object): 29 list_display = [] 30 print("類變量的地址:", id(list_display)) 31 32 # def __init__(self): 33 # self.list_display = [] 34 # print(id(self.list_display))
35 36 def get_list_display(self): 37 self.list_display.insert(0, 33) 38 return self.list_display 39 40 41 s1 = StarkConfig() 42 s2 = StarkConfig() 43 r1 = s1.get_list_display() 44 print(r1) 45 r2 = s2.get_list_display() 46 print(r2) 47 """ 48 類變量的地址: 2554676732488 49 [33] 50 [33, 33] 51 """
View Code


2.方法:
  1.成員實例方法 加了self的,調用必須用對象去訪問
  2.類方法
    當方法需要傳遞類名的時候.需要類方法。在上方加@classmethod
  3.靜態方法 當你的方法不需要傳遞當前類的對象的時候
    語法規則:在方法上面加@staticmethod
    面試題:靜態方法/類方法/實例方法的區別


3.屬性:用方法來描述我們的屬性信息
    1.@property #表示當前方法是一個屬性。方法的返回值就是這個屬性的值
    2.這個方法只能有一個參數self
    3.必須有一個返回值

4.私有
  只能在自己類裏面訪問的
  __方法
  __變量
   __類變量
  都是私有變量,別人訪問不到 包括兒子

技術分享圖片
 1 # 方法屬性實例
 2 class Person(object):
 3 
 4     def __init__(self, name, gender, hobby, money):
 5         self.name = name
 6         self.gender = gender
 7         self.hobby = hobby
 8         self.__money = money
 9 
10     def show(self):
11         print("我有" + str(self.__money) + "元錢")
12         # 私有變量在外面不可直接訪問
13 
14     @staticmethod
15     def calc(a, b):
16         # 就是一個函數  用不到對象而已
17         return a + b
18 
19     @classmethod
20     def classMethod(cls):
21         # 這裏面cls是一個類
22         p = cls("小張", "xx", "chifan", 100)
23         print(type(p), id(p))
24 
25     @property  # 直接當做一個屬性來訪問 不需要括號
26     def age(self):
27         return 10
28 
29 
30 # 關於調用 既然是類方法和靜態方法  那麽你當然要用類去調用啊
31 # 實例化一個類:1.找類名  2.__new__   3.__init__()
32 p = Person("test", "不詳", "睡覺", 1000000000)
33 p.show()
34 print(p.age)
35 print(Person.calc(2, 3))
36 Person.classMethod()
37 """
38 我有1000000000元錢
39 10
40 5
41 <class ‘__main__.Person‘> 2363753049504
42 """
View Code

成員/方法/屬性/私有