Python基础第十天(面向对象,类,self变量,__init__()方法,__ str__()方法,类属性和实例属性)

对象

先有类后有对象
类只有一个在这个类下对象可有多个
一个.py文件中可以多个类


class Dog():
    def eat(self):
        print("小狗吃饭")
    def sleep(self):
        print("小狗睡觉")
d=Dog()
d.eat()
d.sleep()


ass Human():
    def eat(self):
        print("人在吃饭",id(self))
    def study(self):
        print("人在学习",id(self))
zs=Human()
zs.eat()
print(id(zs))
ls=Human()
ls.eat()
print(id(ls))

__ init__()

__ init__()内置方法在创建对象的时候自行执行

class Student():
    def __init__(self,name,age,sex):
        self.name=name#白色字是增加的name属性
        self.age=age#增加age属性
        self.sex=sex#增加sex属性
    def show(self):
        print("我叫{}年龄{}性别{}".format(self.name,self.age,self.sex))
zs=Student("张三",18,"男")
zs.show()

#属性不一定只能在——init——中定义,在其他也能定义
class Student():
    def __init__(self,name):
        self.name=name
    def hehe(self,age):
        self.age=age
    def haha(self):
        print(self.name,self.age)
zs=Student("张三")
zs.hehe(19)
zs.haha()

__ str__()

打印对象的名称时默认调用的是__str__()方法。此方法默认返回的是对象的内存地址。


class Dog():
    def __init__(self,color,age):
        self.color=color
        self.age=age
    def __str__(self):
        print("hehehhe")
        return "颜色%s 年龄%d"%(self.color,self.age)
d=Dog("红色",18)
print(d)#里面自动触发了(这里相当于重写了__str__()方法)方法str(d)然后进入——str——将其转换成字符串


class Teacher():
    def __init__(self,name,salary):
        self.name=name
        self.salary=salary
    def __str__(self):
        return "我叫{},工资{}".format(self.name,self.salary)
zs=Teacher("张三",10000)
print(zs)
x=str(zs)
print(x)


from math import pi
class Circle():
    def __init__(self,radis):
        self.radis=radis
    def arer(self):
        return pi*self.radis*self.radis
    def zhouchang(self):
        return 2*pi*self.radis
    def __str__(self):
        return "我的半径是%.2f周长是%.2f面积是%.2f"%(self.radis,self.zhouchang(),self.arer())
a=Circle(5)
print(a)

类属性和实例属性

实例属性:在实例对象中定义的属性
类属性(静态属性):在类中定义的属性,并且多个实例对象共享一份类属性。
类名.类属性
对象名.类属性

在这里插入图片描述

class People():
    tax=0.09#类属性
    def __init__(self,salary):
        self.salary=salary
    def jiaoshui(self):
        return self.salary*People.tax
a=People(1000000)
b=People(2000000)
print(a.jiaoshui())
print(b.jiaoshui())
People.tax=0.08
print(a.jiaoshui())
print(b.jiaoshui())
print(id(a.tax))
print(id(People.tax))
a.tax=0.07
print(People.tax)



class People():
    tax = 0.09

    def __init__(self, salary):
        self.salary = salary

    def jiaoshui(self):
        return self.salary * People.tax

a = People(1000000)
b = People(2000000)
a.tax+=0.01
print("%.2f"%a.tax,id(a.tax))
print(People.tax,id(People.tax))
People.tax=200
print(a.tax)#a有了自己的属性,类中的就与自己无关了



class A():
    books=["三国","西游记"]
    def __init__(self,name):
        self.name=name
x=A("张三")
y=A("李四")
x.books[0]="水浒"
print(y.books)
print(A.books)
x.books=["红楼梦","大清帝国"]
print(x.books)
print(y.books)
print(A.books)


例题:

class House():
    def __init__(self,info,area,address):
        self.info = info
        self.area=area
        self.address=address
        self.furniture=[]
    def add_furniture(self,f):
        self.furniture.append(f)#两个都传进去了只是在__str__中的for f in self.furniture中将f.name拿了出来
        self.area-=f.area
    def __str__(self):
        s="户型{},面积{},地址{}".format(self.info,self.area,self.address)
        s1="\t室内家具有:"
        for f in self.furniture:
            s1=s1+f.name+","
        return s+s1
class Furniture():
    def __init__(self,name,area):
        self.name=name
        self.area=area
h=House("五室三厅",400,"天安门北")
f=Furniture('双人床',6)
f2=Furniture('柜子',30)
h.add_furniture(f)
h.add_furniture(f2)
print(h)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: __init__ 是 Python 中的一个特殊方法,用于初始化一个对象。当创建一个新对象时,Python 会自动调用 __init__ 方法来初始化该对象的属性。在 __init__ 方法中,可以定义对象的属性方法,以及对这些属性方法进行初始化。 ### 回答2: __init__是Python中的一个特殊方法,用于初始化一个实例。它在实例的过程中自动调用,用于设置对象的初始状态。一般来说,我们会在这个方法中对实例变量进行赋值和初始化。 __init__方法的参数一般会包含self和其他用户定义的参数。self代表当前实例化的对象,通过self我们可以访问到该对象的实例变量。其他参数则是根据需要来定义,可以在实例的时候传入相应的参数。 在__init__方法中,我们可以对实例变量进行赋值,从而为对象设置初始状态。这些实例变量可以通过self来引用,以在的其他方法中进行访问。__init__方法可以在实例化过程中进行一些额外的操作,例如打开文件、建立数据库连接等。 除了__init__方法Python还有其他一些特殊的方法,如__str__、__len__等。这些方法可以在中定义,用于增强的功能和可读性。例如,通过定义__str__方法,我们可以自定义对象的打印输出。 总结来说,__init__方法Python中的一个特殊方法,用于初始化实例。它在实例的时候自动被调用,用于设置实例的初始状态。通过__init__方法,我们可以对实例变量进行赋值和初始化,为对象提供初始状态。 ### 回答3: Python中的`__init__`是一个特殊方法,用于在创建对象时进行初始化操作。它是所有中都可以使用的默认构造函数。 当我们创建一个实例时,`__init__`方法会自动调用,用于给对象设置初始状态。在`__init__`方法中,我们可以定义一些需要被初始化的属性,并对这些属性赋予初始值。 `__init__`方法通常有一个参数self,它代表了实例对象本身。通过self,我们可以访问和操作实例对象的属性方法。在`__init__`方法中,我们可以使用self来设置对象的初始属性。 例如,假设我们有一个名为Person的,`__init__`方法可以用来初始化Person实例对象的姓名和年龄属性。示例代码如下: ``` class Person: def __init__(self, name, age): self.name = name self.age = age def introduce(self): print(f"我的名字是{self.name},我今年{self.age}岁。") person1 = Person("张三", 20) person1.introduce() # 输出:我的名字是张三,我今年20岁。 ``` 以上是使用`__init__`方法实例对象进行初始化的一个简单示例。在实际使用中,`__init__`方法常常用于初始化一些需要在对象创建时就具备的属性,以及执行一些需要在对象创建时就执行的逻辑操作。 总之,`__init__`是Python中一个特殊的方法,用于在创建对象时进行初始化操作。通过`__init__`方法,我们可以给对象设置初始属性,并在对象创建时执行一些逻辑操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值