Python 类与对象
deja_ve 人气:3
## 类与对象
### 类的定义
1. 在Python中,一切皆对象。定义类时便创建了一个新的自定义类型对象,简称类对象,类名就指向类对象。
此时可以通过类名和圆点运算符“.”来访问类的属性,其语法格式:类名.属性名
```python
class Student():
name = "张三"
gender = "男"
age = "18"
def show_info():
print("姓名:", Student.name)
print("性别:", Student.gender)
print("年龄:", Student.age)
if __name__ == "__main__":
show_info()
# 打印结果
"""
姓名: 张三
性别: 男
年龄: 18
"""
```
#### 创建对象
1. 类是对象的模板,对象是类的实例。定义类之后,可以通过赋值语句来创建类的实例对象,其语法格式:
> 对象名=类名(参数列表)
2. 创建对象之后,该对象就拥有类中定义的所有属性和方法,此时可以通过对象名和圆点运算符来访问这些属性和方法,其语法格式如下:
> 对象名.属性名
> 对象名.方法名(参数)
```python
class Demo():
name = "Test"
def get_name(self):
return self.name
def set_name(self, new_name):
self.name = new_name
if __name__ == "__main__":
demo = Demo()
name = demo.get_name()
print("更改前的名字:",name)
demo.set_name("张三")
print("更改后的名字:",demo.get_name())
# 打印结果
"""
更改前的名字: Test
更改后的名字: 张三
"""
```
### 成员属性
1. 类中定义的变量成员就是属性。属性按所属的对象可以分为类属性和实例属性,类属性是类对象所拥有的属性,属于该类的所有实例对象;
实例属性是该类的实例对象所拥有的属性,属于该类的某个特定实例对象
#### 类属性
1. 类属性按能否在类外部访问可以分为公有属性和私有属性,它们都可以通过在类中所有方法之外通过定义成员变量来创建,
创建类之后也可以在类定义的外部通过类名和圆点运算符来添加公有属性。
2. 定义属性时,如果属性名以双下画线“__”开头,则该属性就是私有属性,否则就是公有属性
3. 类中所有方法之外,无论是公有属性还是私有属性都可以直接通过变量名来访问,在类的成员方法内部则要通过“类名.属性名”形式来访问。
在类的外部,公有属性仍然可以通过“类名.属性名”形式来访问,私有属性则不能通过这种形式来访问。
如果试图通过“类名.属性名”形式来访问私有属性,系统则会发出AttributeError错误。
4. 若一定要在类的外部,这个私有属性必须通过以下方式来访问:
类名._类名__attr
#### 实例属性
实例属性是某个类的实例对象所拥有的属性,属于该类的某个特定实例对象。实例属性可以在类的内部或类的外部通过赋值语句来创建。
1. 在类的内部,定义类的构造方法__init__或其他实例方法时,通过在赋值语句中使用self关键字、圆点运算符和属性名来创建实例属性,其语法格式如下:
self.属性名=值
其中self是类成员方法的第一个参数,代表类的当前实例。所谓实例方法就是类的实例能使用的方法。
定义实例方法时,必须设置一个用于接受类的实例的参数,而且这个参数必须是第一个参数。在实例方法中,可以通过“self.属性名”形式来访问实例属性。
2. 在类的外部,创建类的实例后,可以通过在赋值语句中使用实例对象名、圆点运算符和属性名来创建新的实例属性,其语法格式如下:
对象名.属性名=值
其中对象名表示类的一个实例。在类的外部,同样也可以通过“对象名.属性名”形式来读取已经存在的实例属性的值。
加载全部内容