Python讲堂 关于类Class的使用说明

class ClassName(bases):  # bases是基类或者父类
   data = value  # 定义数据属性,类创建时候就有  # 类属性,类创建时候就有,各个实例都可使用
   def method(self, ...):  # 定义方法属性, 注意此处第一个参数是self
      self.member = value  # 实例属性,只被个别的实例所使用

____________________

数据属性 , 类属性  可以通过加self被调用:

例如:

class FirstClass():
          spam = 30:
           def dispaly(self):
                   print( self.spam )

____________________

https://blog.csdn.net/qq_42242750/article/details/80515440

先实例化类x = MyClass()  ,调用类里面的方法属性 x.f()

class MyClass:
    """一个简单的类实例"""
    i = 12345
    def     f  (self):
        return 'hello world'

# 实例化类
x = MyClass() 

# 访问类的属性和方法
print("MyClass 类的属性 i 为:", x.i )
print("MyClass 类的方法 f 输出为:", x.f() )

______________________

方法属性里面用到了类属性要加self

>>> class Myclass:
...     data = 123
...     def f(self):
...             print( self.data )  # 用的前面的data数据属性,所以需要self.data
...
>>> x= Myclass()
>>> x.data
123
>>> x.f()  # 方法被调用,需要加()
123
>>>

______________________

类的内部定义

>>> class Seconclass:
...     data = 'hello secondclass'
...     def setdata(self,x):  # 设置实例内部数据 参数,不同的类实例设置的参数不一样
...             self.str1 = x   # str1是实例属性
...     def printdata(self):
...             print(self.str1)
...
>>> ins = Seconclass()
>>> ins.data
'hello secondclass'
>>> ins.setdata('abcd')
>>> ins.printdata()
abcd
>>> ins2 = Seconclass()
>>> ins2.data
'hello secondclass'
>>> ins2.setdata('xyz')
>>> ins2.printdata()
xyz

 

在这里 实例 调用类内方法(instance.method)等价与 类(实例, 'xyz' )

ins2.setdata('xyz') = Seconclass( ins2 ,  'xyz' )

______________________

构造器 __init__ 在实例化过程直接把参数传递进去

>>> class MyClass():
...     data = 'hello world'
...     def __init__(self,x):
...             self.str1 = x
...
>>> i = MyClass('abcd')  # 通过构造器, 实例化过程直接把参数传递进去
>>> i.data
'hello world'
>>> i.str1
'abcd'

______________________

>>> class animal:
...     name = 'someone'
...     def __init__(self, voice = 'hi'):
...             self.voice = voice
...     def say(self):
...             print(self.voice)
...
>>> tom = animal()
>>> tom.say()
hi

>>> jerry = animal('hello') # 通过构造器, 实例化过程直接把参数传递进去
>>> jerry.say()
hello

 

 

>>> class Animal:
...     name = 'someone'  # 类变量 静态变量
...     def __init__(self, voice = 'hi'):
...             self.voice = voice  # 实例变量
...     def saySomthing(self):
...             x= 4    #方法内,称作局部变量
...             print(self.voice)
...
>>> tom = Animal()  
>>> tom.saySomthing()
hi

对类中类变量更改,会直接导致实例的类变量的改变

>>> animal.name = 'zjc'
>>> tom.name
'zjc'
>>> jerry.name
'zjc'

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值