类的对象属性和init方法

2018-06-27  本文已影响0人  丫丫姑娘_b55e

class 类名:
    属性
    方法
实例一:init方法会自动被调用
class Person:

实例二:带参的init方法

class Dog:
       """狗"""
       def _ _ init_ _(self,name=""):
print('名字是:%s'%(name))

通过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:

  1. 调用带有默认参数self的方法,不需要给self传参。系统会自动将调用当前方法的对象传给self

  2. 在方法中使用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方法中去操作

内置类属性

上一篇 下一篇

猜你喜欢

热点阅读