ホームページ  >  記事  >  バックエンド開発  >  Python3 のクラスとオブジェクトを理解する (コード例)

Python3 のクラスとオブジェクトを理解する (コード例)

不言
不言転載
2018-10-27 16:00:059960ブラウズ

この記事の内容は Python3 のクラスとオブジェクトの理解 (コード例) です。一定の参考価値があります。必要な友人が参照できます。お役に立てば幸いです。 。

クラスとは
クラスとは、一般に、多くの類似した個人で構成され、共通の特性を持つものを指す抽象的な概念です。たとえば、クラスは車です
、この車にはさまざまなモデルが含まれています
オブジェクトとは
クラス内の特定のもの。たとえば、五陵神車 S (GTR がコーナリング中に数秒で落とされるというジョークはまだ記憶に新しい) は車のクラスを具体化したものです。
最初にクラスがあり、次にオブジェクトがあります

クラスとオブジェクトを理解する

def eating():
    print("吃草")
    
def walking():
    print("走路")

eating()
walking()
#(输出)    吃饭
        走路
    
#这样的话,别人也可以调用你写的函数,但是调用eating() 并不能清除的了解到到底是谁 “吃饭”,
#所以我们输入一个name来明确是谁在吃草。

def eating(name):
    print(name,"吃饭")
eating("zhuozi")            #调用函数
#(输出)zhuozi 吃草

#しかし、zhuozi を食事に使用するのは論理的に不適切であることがわかります。文法的には問題ありませんが、
#なので、次のカテゴリに分類します。 "食べる" 1 つのカテゴリ、つまり category に分割されているので、クラス パーソン:
#Python の組み込み関数のクラスと区別するために大文字の P が使用される理由 組み込みクラス名はすべて小文字です (マウスを Ctrl キーを押しながら組み込み関数を左クリックして表示できます)

class Person:            #这样我们就将eating封装到了Person这个类里面
                        #只要是Person这一类别的都可以进行下面的行为(eating)
    def eating(name):
        print(name,"吃饭")
        
zhangsan = Person()        #这里就不能像以前一样用eating去调用了,因为只有Person这一类的才能就行eating这个行为
                        #所以我们就要先将zhansan定义为Person这一类    
zhangsan.eating()        #然后才能让张三进行吃草这种行为
#(输出)<__main__.Person object at 0x000001D2CCC21160> 吃饭

lisi = Person()            #lisi也要吃饭,那继续定义lisi 是person 类 他可以吃饭
lisi.eating()            #lisi就可以吃饭了
#(输出)<__main__.Person object at 0x000001BCC6BF1198> 吃饭

#打印的一个地址,一个类的地址 object(翻译就是对象)就表示 lisi是这个类的对象
#lisi 就是 Person这个类 实例化的对象。

食べる(名前)を定義する前に: 名前は誰が食べているかと見ることができ、厳格な要件がここでの文法の要点は、self を使用して、誰が食事をしているかを表すことです。したがって、次のようになります。

class Person:
    def eating(self):
        print(self,"吃饭")
class Person:
    pass
========
list  这里我们ctrl + 鼠标左键点击pycharm 里面书写的list,如图:

Python3 のクラスとオブジェクトを理解する (コード例)
組み込み関数のクラス名はすべて小文字であり、前に使用したクラス (リスト名).append() は次のとおりであることがわかります。今話していること クラスの下で関数を呼び出すとき、括弧内のオブジェクト名は self で、リスト名はインスタンス化されたオブジェクトです。

構文

class 类名(父类列表):        #类名和变量名称的命名是一样的,类名首字母要大写,
                            #用来区别是否是内置函数自带的类
    类体
    
数据属性                        #类的共同属性,名字,性别,干什么的,等等

方法属性                        #这个类共同都有的功能,跑,跳,计算,记录等等
class Person:
    pass

zhangsan = Person()                #张三是Person实例化的对象,所以要开辟一个内存来存储,
                                #即将zhangsan变量名指向这个内存地址
print(zhangsan)
#(输出)<__main__.Person object at 0x00000194D8D28400>

既然实例化对象后开辟了内存,我们就要在里面进行一个存储
class Person:
    pass

zhangsan = Person()
zhangsan.name = "zhangsan"                #给这个实例化的对象附一个名字
print(zhangsan)
#(输出)<__main__.Person object at 0x0000018DF6598400>

print(zhangsan.name)                    #打印出这个对象的名字
#(输出)zhangsan

zhangsan对象名 指向  内存,内存里面有一个属性name,而name指向zhangsan这个名字  两个zhngsan 不一样啊
zhangsan(类的对象名字)  -- 》内存 (name)----》zhangsan(对象的属性)

lisi = Person()                    #再实例化一个对象
lisi.name = "xiaolong"
print(lisi.name)    
print(id(lisi.name))            
lisi = Person()
lisi.name = "xiaolong"

print(id(zhangsan))
#(输出)2070146453856
print(lisi.name)
#(输出)xiaolong
print(id(lisi.name))
#(输出)2070146521264
インスタンス化された 2 つのオブジェクトの ID が異なることがわかります。

ここで名前空間のルールを説明します。特別な処理が実行されない場合、オブジェクトはシステムの別のメモリ ストレージを占有します。

class Person:
    pass

zhangsan = Person()                    
zhangsan.name = "zhangsan"
zhangsan.sex = "男"
zhangsan.age = 19
zhangsan.hight = 175

lisi = Person()
lisi .name = "xiaolong"
lisi .sex = "女"
lisi .age = 29
lisi .hight = 170
#两个内容的创建方式相同啊,只是内容不同,那么我们写一个函数来进行这种重复性的操作,
class Person:
    def __init__(self, name, sex, age, hight):
        self.name = name        zhangsan.name = name
        self.sex = sex            zhangsan.name = sex
        self.age = age            zhangsan.name = age
        self.hight = hight        zhangsan.name = hight
#self 是为了规范明确是谁调用了,所以相当于将zhangsan这个对象传给了self。
#而后面self之后的name, sex, age, hight 就是所要传入的"zhangsan" "男"19 175 信息
#zhangsan = Person()                
#zhangsan.name = "zhangsan"
#zhangsan.sex = "男"
#zhangsan.age = 19
#zhangsan.hight = 175

这样我们就不用再像上面一样传入了
zhangsan = Person("zhangsan","男","19",175)
print(zhangsan.name)
#(输出)zhangsan

init: システム内に存在する特別な関数です。オブジェクトをインスタンス化するとき (zhangsan = Person("zhangsan","male","19",175) ) の場合、デフォルトのインスタンス化されたオブジェクトがこの関数を呼び出します。 def init(self, name, sex, age, height):self オブジェクトは等号の前に zhangsan という名前が付けられます。
名前、性別、年齢、身長は「zhangsan」に対応します。 、"男性"、"19"、175

以上がPython3 のクラスとオブジェクトを理解する (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。