class 类名:
属性
方法
实例一:init方法会自动被调用
class Person:
- _ _ init_ _方法又叫构造方法。是在通过类创建对象的时候,自动调用的方法。
- _ _ init_ _方法的作用就是在创建对象的时候初始化对象的属性
- _ _ init_ 方法:对象的属性就是声明在这个方法中
def _ _ init _(self):
在这个地方声明对象的属性
声明对象的时候会自动调用init方法
p1 = Person
p2 = Person
实例二:带参的init方法
class Dog:
"""狗"""
def _ _ init_ _(self,name=""):
print('名字是:%s'%(name))
-
通过类创建对象的时候,要保证init方法里面的每一个参数都有值。通过给类名后面的括号里传参来保证
dog1 = Dog ('才才')
dog2 = Dog(name = '旺财‘)
实例三:对象属性
属性:声明在类中的变量
对象属性:要通过对象去使用;不同的对象可能会有不同的值,声明在init方法中的变量class Person2: """人类""" #在init方法中声明对象属性:self.属性名 = 初值 def _ _init_ _(self): self.name = '无名氏' #声明了一个对象属性,初始值为空串 self.age = 10
通过Person2类创建对象p1
p1 = Person2()
通过p1对象去修改p1的name属性
p1.name = '张三'
实例四:创建对象的时候赋初值
class Student2:
def _ _init _ _(self,name1=' ' , age1 = 0, tel = ' '):
self.name = name1
self.age = age1
self .tel = tel1
stu2 = Student2('小明',18 , '112')
self
类中的对象方法都有一个默认参数self:
调用带有默认参数self的方法,不需要给self传参。系统会自动将调用当前方法的对象传给self
-
在方法中使用self就相当于使用调用方法的对象(只能使用self,不能重新给self赋值)
class Person: """人""" def _ _init_ _(self, name='', age=0): # 声明对象属性 self.name = name self.age = age def eat(self): print('吃饭') def run(self): print('self',self) print('%s跑起来'%(self.name) self.eat()
创建一个Person对象
练习:声明一个圆类, 拥有属性:半径 拥有方法: 计算圆的面积、计算圆的周长
from math import pi
class Circle:
""" 圆"""
def _ _init_ _(self,radius=0);
self.radiius = radius
def area():
return pi*self.radius**2
def girth():
return 2*pi*self.radius
c1 = Circle(10)
print('%.2f'%c1.area())
属性的增删改查
class Dog:
"""狗🐶"""
# Dog类有name和age两个属性
def __init__(self, name='', age=0):
self.name = name
self.age = age
dog1 = Dog('才才')
1.查
方式1: 对象.属性
特点:如果属性存在就获取属性的值。如果属性不存在就会报AttributeError错误
方式2:getattr(对象, 属性名, 默认值)
--> 获取指定对象的指定属性
如果不设置默认值: 属性如果存在就获取属性的值;不存在就报错
如果设置默认值:属性如果存在就获取属性的值;属性不存在的时候,不报错,并将默认值作为结果
方式3:对象.getattribute(属性名)
获取指定对象的指定属性。如果属性不存在就会报错
print(dog1.name)
print(getattr(dog1,'name,None)
print(dog1._ getattribute _('name')
2.改
方式1: 对象.存在的属性 = 新值
方式2:setattr(对象, 属性名, 新值)
方式3:对象.setattr(属性名, 新值)
dog1.name = '大黄'
print(dog1.name)
setattr(dog1,'name','小黄')
dog1._ setattr _('name','小黑')
3.增(对象添加属性)
方式1:对象.不存在的属性 = 值
方式2:setattr(对象, 不存在的属性名, 新值)
方式3:对象._ setattr _(不存在的属性名, 新值)
dog1.sex = '男'
print(dog1.sex)
setattr(dog1, 'score', 100)
print(dog1.score)
4.删除属性
方式1:del 对象.属性
方式2:delattr(对象, 属性名)
方式3:对象.delattr(属性名)
del dog1.age
delattr(dog1, 'age')
dog1._ delattr _('age')
5.判断对象是否拥有某个属性
方式:hasattr(对象, 属性名) ---> 判断指定的对象是否拥有指定的属性
result = hasattr(dog1 ,'name')
print(result)
注意:1.对对象属性的增、删、改、查是针对指定的那个一个对象。不会影响其他的对象
2.实际开发用的时候,一般只用获取对象属性的值和修改对象属性的值。想要添加和删除属性,一般都是在init方法中去操作
- 通过给 _ slots 赋值,可以限制类中对象的属性有哪些,防止一个不必要的属性被添加
slots = ('name', 'age', 'color')
注意: slots _中规定的属性,只能少不能多。删除属性是不受影响的
内置类属性
- 内置的类属性是属于类的,需要通过类去使用
1.类._ name _ : 获取类的名字(只有类有这个属性)
2.类._ doc _ : 获取类的说明文档
3._ dict _
类._ dict _ : 获取类中所有的类属性(类字段)和对应的值的键值对 --> 结果是字典
对象._ dict _ : 以键值对的形式获取指定对象的所有的属性和值
类._ module _ : 获取类所在的模块的名字
类._ bases _ : 获取指定类的基类