คำถามติดแท็ก self

22
จุดประสงค์ของคำว่า 'ตัวเอง' คืออะไร?
วัตถุประสงค์ของselfคำใน Python คืออะไร? ฉันเข้าใจว่ามันหมายถึงวัตถุเฉพาะที่สร้างขึ้นจากคลาสนั้น แต่ฉันไม่สามารถดูได้ว่าทำไมจึงต้องเพิ่มอย่างชัดเจนในทุกฟังก์ชั่นเป็นพารามิเตอร์ เพื่อแสดงใน Ruby ฉันสามารถทำสิ่งนี้: class myClass def myFunc(name) @name = name end end ซึ่งฉันเข้าใจค่อนข้างง่าย อย่างไรก็ตามใน Python ฉันต้องรวมself: class myClass: def myFunc(self, name): self.name = name ทุกคนสามารถพูดคุยกับฉันผ่านสิ่งนี้ได้ไหม? มันไม่ใช่สิ่งที่ฉันได้เจอในประสบการณ์ของฉัน
1130 python  class  oop  self 

18
__init__ และตัวเองทำอะไรกับ Python
ฉันเรียนรู้ภาษา Python และฉันเจอบางอย่างที่ฉันไม่เข้าใจ ในวิธีการเช่น: def method(self, blah): def __init__(?): .... .... อะไร selfทำอย่างไร มันหมายความว่าอะไร จำเป็นหรือไม่ อะไร __init__วิธีการทำอย่างไร ทำไมถึงจำเป็น? (อื่น ๆ ) ฉันคิดว่าพวกเขาอาจเป็น OOP ที่สร้างขึ้นมา แต่ฉันไม่รู้มาก
792 python  oop  self 

5
ตัวแปร 'cls' ใช้สำหรับอะไรในคลาส Python
ทำไมclsบางครั้งใช้แทนselfอาร์กิวเมนต์ในคลาส Python ตัวอย่างเช่น: class Person: def __init__(self, firstname, lastname): self.firstname = firstname self.lastname = lastname @classmethod def from_fullname(cls, fullname): cls.firstname, cls.lastname = fullname.split(' ', 1)

8
TypeError: method () ใช้เวลา 1 อาร์กิวเมนต์ตำแหน่ง แต่ได้รับ 2
ถ้าฉันมีคลาส ... class MyClass: def method(arg): print(arg) ... ที่ฉันใช้ในการสร้างวัตถุ ... my_object = MyClass() ... ที่ฉันเรียกmethod("foo")เช่นนั้น ... >>> my_object.method("foo") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: method() takes exactly 1 positional argument (2 given) ... ทำไมหลามถึงบอกว่าฉันให้สองข้อโต้แย้งเมื่อฉันให้เพียงอันเดียว?

9
ทำไมคุณต้องมีอาร์กิวเมนต์“ ตัวตน” อย่างชัดเจนในเมธอด Python?
เมื่อกำหนดวิธีการในชั้นเรียนใน Python มันมีลักษณะดังนี้: class MyClass(object): def __init__(self, x, y): self.x = x self.y = y แต่ในบางภาษาอื่น ๆ เช่น C # คุณมีการอ้างอิงถึงวัตถุที่วิธีการที่ถูกผูกไว้กับคำหลัก "นี้" โดยไม่ต้องประกาศว่ามันเป็นข้อโต้แย้งในต้นแบบวิธีการ นี่เป็นการตัดสินใจออกแบบภาษาโดยเจตนาใน Python หรือมีรายละเอียดการนำไปปฏิบัติบางอย่างที่ต้องใช้การผ่าน "ตนเอง" เป็นอาร์กิวเมนต์หรือไม่?
197 python  oop  methods  self 

6
ตัวแปรอินสแตนซ์: self vs @
นี่คือรหัสบางส่วน: class Person def initialize(age) @age = age end def age @age end def age_difference_with(other_person) (self.age - other_person.age).abs end protected :age end สิ่งที่ฉันต้องการที่จะทราบความแตกต่างระหว่างการใช้@ageและself.ageในage_difference_withวิธีการ

11
ตกแต่งงูหลามในชั้นเรียน
หนึ่งสามารถเขียนสิ่งที่ชอบ: class Test(object): def _decorator(self, foo): foo() @self._decorator def bar(self): pass สิ่งนี้ล้มเหลว: ไม่รู้จักตนเองใน @self ฉันก็ลอง: @Test._decorator(self) ซึ่งยังล้มเหลว: ทดสอบที่ไม่รู้จัก ฉันต้องการเปลี่ยนตัวแปรอินสแตนซ์ในมัณฑนากรชั่วคราวแล้วเรียกใช้วิธีการตกแต่งก่อนที่จะเปลี่ยนกลับ
140 python  class  decorator  self 

11
จะหลีกเลี่ยง 'ตัวเอง' อย่างชัดเจนใน Python ได้อย่างไร?
ฉันได้รับการเรียนรู้หลามโดยทำตามบางบทเรียน pygame ในนั้นผมพบว่าการใช้งานที่กว้างขวางของคำหลักที่ตัวเองและมาจากพื้นหลัง Java ส่วนใหญ่ฉันพบว่าฉันให้ลืมที่จะพิมพ์ด้วยตนเอง ตัวอย่างเช่นแทนที่self.rect.centerxฉันจะพิมพ์rect.centerxเพราะสำหรับฉันแล้วrectเป็นตัวแปรสมาชิกของคลาสอยู่แล้ว ขนาน Java ฉันจะคิดว่าสำหรับสถานการณ์นี้จะมีคำนำหน้าการอ้างอิงถึงตัวแปรสมาชิกด้วยนี้ ฉันติดคำนำหน้าตัวแปรสมาชิกทั้งหมดด้วยตนเองหรือมีวิธีการประกาศตัวแปรที่ทำให้ฉันหลีกเลี่ยงไม่ได้หรือไม่ แม้ว่าสิ่งที่ฉันแนะนำจะไม่ใช่pythonicแต่ฉันก็ยังอยากรู้ว่าเป็นไปได้ไหม ฉันได้ดูคำถาม SO ที่เกี่ยวข้องเหล่านี้แล้ว แต่พวกเขาไม่ค่อยตอบในสิ่งที่ฉันต้องการ: Python - ทำไมถึงใช้ "self" ในชั้นเรียน ทำไมคุณต้องมีอาร์กิวเมนต์ "self" อย่างชัดเจนในเมธอด Python
131 python  self 

5
ตัวเองใหม่ (); ค่าเฉลี่ยใน PHP?
ฉันไม่เคยเห็นรหัสแบบนี้: public static function getInstance() { if ( ! isset(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; } มันเหมือนกับnew className()? แก้ไข ถ้าคลาสเป็นผู้สืบทอดคลาสใดที่ชี้ไปที่?
110 php  class  self 

1
WPF ผูกกับตัวเอง
ฉันมี WPF Windowและมีที่ไหนสักแห่งListViewที่ฉันผูกList<string>กับ. ตอนนี้ที่ไหนสักแห่งในฉันListViewมีTextBoxและการตั้งค่าคุณสมบัติContent{Binding} แต่นี่คือชวเลข ฉันจะเขียนการผูกแบบเต็มเพื่อผูกเข้ากับตัวมันเองได้อย่างไร? {Binding Path=Self}ไม่ทำงานไม่ทำ{Binding Self}(โดยที่อันหลังเป็นทางลัดสำหรับอดีต)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.