1 '''
2 构造函数:__init__(self, 参数): 实例化对象时自动调用。
3 python中没有函数重载,init函数在一个类中写多个不会报错,但
4 只有最后一个构造函数有效。
5 建议:以后类的构造函数只写一个即可。
6 '''
7 class Person():
8 '''
9 # 类属性
10 name = "lily"
11 age = 0
12 sex = "F"
13 '''
14 # 普通方法
15 def eat(self):
16 print("eat---1")
17 # 系统默认自带的构造方法:无参数,函数体中无内容
18 '''
19 def __init__(self):
20 pass
21 '''
22 # 我们重写构造函数时,可以更改形参数量,可以重新设置函数体中的内容
23 # 构造函数没有return语句
24 '''
25 def __init__(self):
26 print("init函数")
27 '''
28 # 更改参数个数
29 '''
30 def __init__(self, name, age):
31 # name == 形参
32 # self.name == 对象属性
33 # print(name, age)
34 # 对象属性:(在init方法中使用self.的方式创建的属性)
35 self.name = name
36 self.age = age
37 self.sex = 0
38 '''
39 # 三个属性name,age,sex,实例化对象时,必传参数有name 其他两个可选
40 def __init__(self, name, age=0, sex=0):
41 self.name = name
42 self.age = age
43 self.sex = sex
44 # print(12345678)
45
46
47 # def __init__(self, name, **kwargs):
48 # self.name = name
49 # self.age = kwargs.get("age")
50 # self.sex = kwargs.get("sex")
51 # self.age = kwargs["age"]
52
53
54
55 per1 = Person(name="lucy")
56 print(per1.name, per1.age, per1.sex)
57 per2 = Person(name="lili", age=30)
58 print(per2.name, per2.age, per2.sex)
59 per3 = Person(name="aaa", sex=1)
60 print(per3.name, per3.age, per3.sex)
61 per4 = Person(name="b", age=40, sex=1)
62 print(per4.name, per4.age, per4.sex)
63
64 per5 = Person(name="123", age=12, sex=89)
65 print(per5.name)
66
67 # per5.__init__(name=123, age=456, sex=789)
68
69
70
71 # Person() 执行的是:Person类中的init方法
72 # per1 = Person("lucy", 12)
73 # print(per1.name) # lucy
74 # print(per1.age)
75 # per2 = Person("lilei", 30)
76 # print(per2.name) # lilei
77 #
78 # print(per1.sex) # 0
79 # print(per2.sex) # 0
80
81
82
83
84
85
86
87
88 '''
89 class Student:
90 name = "lily"
91
92 stu = Student()
93 print(stu.name)
94 '''